用 KVC 作 ORMapping

以往要把從雲端API取到的 json 資料 set 進相對應的 Object 屬性,最陽春的做法就是像以下這樣,有多少屬性就得寫多少行 Mapping,很麻煩

sDevice.did = device[“did"] as! String
sDevice.brand = device[“brand"] as! String
sDevice.model = device[“model"] as! String
sDevice.nickname = device[“nickname"] as! String
…………..

有了 KVC 後,這樣就自動搞定啦!!
for key in device.allKeys
{
let key = “\(key)
//判斷這個屬性在sDevice中是否存在
if sDevice.respondsToSelector(NSSelectorFromString(key))
{
print(“key: \(key)")
sDevice.setValue(device.valueForKey(key), forKey: key)
}
}
但還是有缺點,就是 json 的 key 和 object 的屬性必須一樣,這樣一來耦合性就變高了,相較起來第一種寫法還是比較彈性。
網頁參考:Key-value coding        漫談 KVC 與 KVO

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *