์๋
,
json์ ๊ฐ์ฒด์ ๋งคํํ๋ ค๊ณ ํ๋๋ฐ ํญ์ nil์ธ ๊ฐ(์ ์)์ด ์์ต๋๋ค.
์ด๊ฒ์ ๋ด json ์ํ์ ๋๋ค.
{"username":"user1","age":3}
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ด ์ฝ๋์ ๋๋ค.
class T1: Mappable {
var username: String?
var age: String?
required init?(map: Map) {
}
// Mappable
func mapping(map: Map) {
let transform = TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
// transform value from String? to Int?
return Int(value!)
}, toJSON: { (value: Int?) -> String? in
// transform value from Int? to String?
if let value = value {
return String(value)
}
return nil
})
username <- map["username"]
age <- (map["age"], transform)
}
}
json์ด ""๋ฅผ ์ฌ์ฉํ์ง ์๊ณ "age"๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ transformOF ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด๋ก ๋ณํํ๋ ค๊ณ ํ๋ฏ๋ก ๋ฌธ์์ด ์ ํ์ "age" ๋ณ์์ ์ ์ฅํ ์ ์์ต๋๋ค("age" ์ ํ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Int๋ก, ๋ค์๋ถํฐ๋ ์์ญ ์ง์์ ์ถ๊ฐํ ๊ฒ์ด๋ฉฐ ํด๋น ๋ณ์๋ String์ด์ด์ผ ํฉ๋๋ค.
์ด์จ๋ ๋ณํ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ ค๊ณ ํ ๋ ์ด ์ค๋ฅ๋ก ์ธํด ํ๋ก์ ํธ๋ฅผ ์ปดํ์ผํ ์ ์์ต๋๋ค.
์ดํญ ์ฐ์ฐ์ '<-'๋ 'String' ๋ฐ '(Map, TransformOf ์ ํ์ ํผ์ฐ์ฐ์์ ์ ์ฉํ ์ ์์ต๋๋ค.
)'
TransformOf๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ์ฌ ์ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
๊ฐ์ฌ ํด์
+1
@adasoft-dev, ๋น์ ์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋กํ๊ณ ์์ต๋๋ค. TransformOf
๋ String
๋ฐ Int
ํด๋นํ๋ TransformOf<Object, JSON>
๋ก ์ ์๋ฉ๋๋ค.
let transform = TransformOf<String, Int>(
fromJSON: { (value: Int?) -> String? in
if let value = value {
return String(value)
} else {
return nil
}
},
toJSON: { (value: String?) -> Int? in
if let value = value {
return Int(value)
} else {
return nil
}
}
)
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์๋ฒ๋ ํญ์ ๊ฐ์ด int ์ ํ ๋๋ ๋ฌธ์์ด ์ ํ์ ๋ฐํํฉ๋๋ค. ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก ํด๋์ค์ ์ ์๋ ์ ํ์ด ์์ผ๋ฉด json ๋ฌธ์์ด์ ๊ฐ ์ ํ์ด ๋ณํ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋์ค์์ ์ ํ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@adasoft-dev, ๋น์ ์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋กํ๊ณ ์์ต๋๋ค.
TransformOf
๋String
๋ฐInt
ํด๋นํ๋TransformOf<Object, JSON>
๋ก ์ ์๋ฉ๋๋ค.