ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] CaseIterable μ΄λž€?
    iOS/🟠 Swift 2021. 3. 29. 02:47
    πŸ€–πŸŸ’[우짱의 iOS λΈ”λ‘œκ·Έ]πŸ”΅πŸ’»

    iOSλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

     

    μ•ˆλ…•ν•˜μ„Έμš”. μ˜€λŠ˜μ€ CaseIterable ν”„λ‘œν† μ½œμ— λŒ€ν•΄ μ •λ¦¬ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€ 🐢

     

    CaseIterable μ€ 'Case' λΌλŠ” ν‚€μ›Œλ“œμ—μ„œ μœ μΆ”ν• μˆ˜ μžˆμ§€λ§Œ μ—΄κ±°ν˜•κ³Ό κ΄€λ ¨λœ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

     

    μ»΄νŒŒμΌλŸ¬κ°€ ν”„λ‘œν† μ½œ κ΅¬ν˜„μ„ μžλ™μœΌλ‘œ μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— 채택 μ„ μ–Έλ§Œ ν•΄μ£Όλ©΄ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    λ¬Όλ‘  λͺ¨λ“  μ—΄κ±°ν˜•μ— λŒ€ν•΄ μ œκ³΅ν•˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. κ·Έ λ‚΄μš©μ€ μ•„λž˜μ—μ„œ λ‹€λ£¨κ² μŠ΅λ‹ˆλ‹€.

     

    κ·Έλ ‡λ‹€λ©΄ CaseIterable 을 μ„ μ–Έν•˜λ©΄ μ–΄λ–€ 것을 μ–»κ²Œ λ˜λŠλƒ....?

     

    λ°”λ‘œ allCases λΌλŠ” νƒ€μž… μ†μ„±μž…λ‹ˆλ‹€.

     

     

    λͺ¨λ“  κ΅¬ν˜„μ„ λ³Ό μˆ˜λŠ” μ—†μ§€λ§Œ, ν”„λ‘œν† μ½œ μ„ μ–ΈλΆ€λ‘œ 이동해보면 μœ„μ™€ 같이 볼수 μžˆλŠ”λ°...

     

    allCases λŠ” Self.AllCases νƒ€μž…μž…λ‹ˆλ‹€.

     

    λ‹€μ‹œ μœ„μ˜ AllCases νƒ€μž… μ•žμ—  associatedtype λΌλŠ” ν‚€μ›Œλ“œκ°€ λˆˆμ— λ•λ‹ˆλ‹€.

     

    이것은 ν”„λ‘œν† μ½œμ—μ„œ νŠΉμ •λ˜μ§€ μ•Šμ€ νƒ€μž…μ„ ν‘œν˜„ν•˜κ³ μ‹Άμ„λ•Œ μ‚¬μš©ν•˜λŠ” λ¬Έλ²•μž…λ‹ˆλ‹€.

    κ΄€λ ¨ κΈ€: associatedtype (μž‘μ„±μ˜ˆμ •)

     

    AllCases λŠ” Self == Self.AllCases.Element 쑰건을 λ§Œμ‘±ν•˜λŠ” μš”μ†Œλ‘œ 이루어진 Collection ν”„λ‘œν† μ½œμ„ μ±„νƒν•œ νƒ€μž…μ΄λ„€μš”!

     

    μœ„ 쑰건은 μ»¬λ ‰μ…˜ μš”μ†Œκ°€ Self νƒ€μž…μœΌλ‘œ 이루어져 μžˆμ–΄μ•Όν•¨μ„ 이야기 ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

     

    μ •λ¦¬ν•˜λ©΄ AllCases νƒ€μž…μ€, μ—΄κ±°ν˜• νƒ€μž… μžμ‹ μ„ νƒ€μž…μœΌλ‘œ κ°€μ§€λŠ” μš”μ†Œλ“€μ„ 가지고 μžˆλŠ” μ»¬λ ‰μ…˜μ„ λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…μž…λ‹ˆλ‹€!

     

    즉 νƒ€μž… 속성 allCases μ˜ νƒ€μž…μ€ [ Self ] 정도가 λ˜κ² λ„€μš”!

     

    μ•„λž˜ μ½”λ“œμ—μ„œ 직접 ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.πŸ‘‡πŸ»πŸ‘‡πŸ»πŸ‘‡πŸ»


     

    예제 μ½”λ“œ

    enum Direction: CaseIterable {
        case north, south, east, west
    }
    
    for val in Direction.allCases {
        print(val)
    }
    
    // "north south east west" κ°œν–‰κ³Ό λ„μ–΄μ“°κΈ°λŠ” μ μ ˆν•˜κ²Œ μƒκ°ν•΄μ£Όμ„Έμš”!

     

    νƒ€μž… 속성 allCases 의 νƒ€μž…μ„ 확인해보면 [Direction] νƒ€μž…μ΄κ³ , 읽기 μ „μš© μ†μ„±μž„μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

     

    μš”μ†Œμ˜ μˆœμ„œλŠ” case μ„ μ–Έμˆœμ„œμ™€ λ™μΌν•˜λ©°, Collection ν”„λ‘œν† μ½œμ˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό λͺ¨λ‘ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    예) Direcrion.allCases.randomElement()

     


     

    쑰건

    μœ„μ—μ„œ λͺ¨λ“  μ—΄κ±°ν˜•μ— λŒ€ν•΄μ„œ μžλ™ κ΅¬ν˜„λ˜μ§€λŠ” μ•ŠλŠ”λ‹€κ³  ν–ˆλŠ”λ°, κ·Όκ±°λŠ” μ•„λž˜ 사진과 κ°™μŠ΅λ‹ˆλ‹€.

     

     

    μ •λ¦¬ν•˜μžλ©΄ μ—°κ΄€ 값을 가지지 μ•Šκ±°λ‚˜, @available 속성을 가진 caseκ°€ μ—†λŠ” μ—΄κ±°ν˜•μ΄μ–΄μ•Όλ§Œ CaseIterable μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ πŸ˜‰

     

     

     

    끝!


     

    'iOS > 🟠 Swift' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

    [Swift] - 상속 (Inheritance)  (0) 2021.04.21
    [Swift] - Deinitialization  (0) 2021.04.20
    [Swift] μ—°μ‚°μž κ΅¬ν˜„ (Implementing Operator Methods)  (0) 2021.03.18
    [Swift] Dictionary 간단 정리  (0) 2021.03.16
    [Swift] Enumeration 총정리  (0) 2021.03.10

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜