-
[iOS] CodingKey λ?iOS/π Documentation 2021. 5. 25. 01:34
μ μ μ§μ : Codable
μλ νμΈμπΆ
μ€λμ Codable νλ‘ν μ½μμ 컀μ€ν ν€ λ§€ν λ±μ μ©λλ‘ μ¬μ©νλ CodingKey νλ‘ν μ½μ λνμ¬ λ€λ£¨μ΄ λ³΄λ €κ³ ν©λλ€.
곡μ λ¬Έμλ₯Ό μ΄ν΄λ³΄λ μ€ μ΄ νλ‘ν μ½μ λν μ€λͺ μ΄ λμμμ΄ μ΄κ²μ μ 리ν΄λ³΄κ² μ΅λλ€.
λ§μ CodingKey λ¬Έμμλ μ€λͺ μ΄ μ ν μμλ...
struct Coordinate: Codable { var latitude: Double var longitude: Double var elevation: Double enum CodingKeys: String, CodingKey { case latitude case longitude case elevation } }
μ μ½λμ κ°μ΄, Codable νμ μ CodingKeys λΌλ μ΄λ¦μ κ°μ§ νΉλ³ν nested μ΄κ±°ν μ μ μν μ μμ΅λλ€.
κ·Έλ¦¬κ³ μ΄ μ΄κ±°νμ CodingKey νλ‘ν μ½μ μ±μ©ν΄μΌ ν©λλ€.
βοΈCodingKeys μ΄κ±°νμ CodingKey νλ‘ν μ½μ μ±νν΄μΌ νλ€. μ² μ 's' νλ μ°¨μ΄μ΄λ μ ꡬλΆν΄μ£ΌμΈμ!
Codable μ μ±μ©ν νμ μ μ΄ μ΄κ±°ν(CodingKeys) μ΄ μ‘΄μ¬νλ€λ©΄, μ΄ μ΄κ²¨νμ νμ μ μΈμ€ν΄μ€κ° μΈμ½λ© νΉμ λμ½λ© λ λ μ΄ μ΄κ±°νμ case 리μ€νΈμ ν΄λΉνλ μμ±λ€μ΄ μ λΆ μμ΄μΌ νλ€κ³ μ μΈνλ μν μ ν©λλ€.
μ΄κ±°ν case λ€μ μ΄λ¦μ μΈμ½λ© νΉμ λμ½λ© λλ νμ μ μμ±μ μ΄λ¦κ³Ό κ°κ° λͺ¨λ 맀μΉλμ΄μΌ ν©λλ€.
λ§μ½ λμ½λ©νλ μΈμ€ν΄μ€μ λ±μ₯νμ§ μκ±°λ,
μλ₯Ό λ€μ΄ λμ½λ©νλ λ°μ΄ν°μλ 'abc'λΌλ μ΄λ¦μ μμ±μ΄ μλλ°, CodingKeys μ΄κ±°νμ μΆκ°νμ¬ λμ½λ©μ μλν μ΄μ κ° μμ΅λλ€.
μΈμ½λ©ν΄μΌνλ ννμ ν¬ν¨λμ§ μμμΌν μμ±μ΄λΌλ©΄ CodingKeys μ΄κ±°νμμ μ μΈνλ©΄ λ©λλ€.
μΈμ½λ©ν λ°μ΄ν°μ μΆκ°νκ³ μΆμ§ μλ μμ±μ΄λΌλ©΄ λν CodignKeys μμ μ μΈνλ©΄ λ©λλ€.
π‘ μΈμ½λ©μμλ νμ μλ μμ± μΈλ°, λμ½λ©μμλ νμνλ€λ©΄? Codable μ Encodable κ³Ό Decodable λ‘ λλμ΄ κ΅¬ννλ€.
CodingKeys μμ μ μΈλ μμ±μ κΈ°λ³Έ κ°μ μ€μ ν΄ λμμΌν©λλ€. κ·ΈλμΌ Codable νλ‘ν μ½μ κΈ°λ³Έ ꡬνμ μ 곡λ°μ΅λλ€.
struct Coordinate: Codable { var latitude: Double var longitude: Double // CodingKeys μμ μ μΈλμμΌλ―λ‘, κΈ°λ³Έ κ°μ nil λ‘ μ€μ νμμ΅λλ€. var elevation: Double? enum CodingKeys: String, CodingKey { case latitude case longitude } }
λ§μ½ CodingKeys μ΄κ±°νμ case μ΄λ¦κ³Ό μμ±μ μ΄λ¦μ΄ μΌμΉνμ§ μλλ€λ©΄, String μ RawValue λ‘ μ¬μ©νμ¬ μ 곡νλ©΄ λ©λλ€.
:: 컀μ€ν ν€ λ§€ν
RawValue λ‘ μ 곡ν κ°μ μΈμ½λ© κ³Ό λμ½λ© μ key μ μ΄λ¦μ μμ± μ΄λ¦μ 맀ννλ λ° μ¬μ©λ©λλ€.
μ΄λ° 컀μ€ν ν€ λ§€νμ ν΅ν΄ Swift API Design Guidelines λ₯Ό λ°λ₯Έ μμ±λͺ μ μ¬μ©ν μ μκ² λ©λλ€.
λ§μ½ ν€ λ§€νμ΄ μ§μμ΄ λμ§ μλλ€λ©΄, μΈλΆμμ λ°μμ¨ swift naming convention μ λ§μ§ μλ μ΄λ¦λ€μ μμ± λͺ μΌλ‘ κ·Έλλ‘ μ¬μ©ν΄μΌ νκΈ° λλ¬Έμ λλ€.
snake_case λ₯Ό μ¬μ©ν΄μΌ νλ€λμ§, UpperCamelCase λ₯Ό μ¬μ©ν΄μΌ νλ€λμ§...
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.μ°Έκ³ λ¬Έμ: https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types
'iOS > π Documentation' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Main event loop λ? (0) 2022.09.16 [Apple Documentation] 맀λλ¬μ΄ μ± μμμ μν λ°μΉ μ€ν¬λ¦° μ€κ³ (0) 2021.10.13 [iOS] Object Graphs μ Archives, κ·Έλ¦¬κ³ Serialization (0) 2021.05.24 [iOS] NSCoding μ΄λ? (feat. μΈμ½λ©, λμ½λ©, μμΉ΄μ΄λΉ) (0) 2021.05.23 Preparing Your UI to Run in the Background - Scenes - UIKit (0) 2021.01.29