-
[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