我將JSON格式的數據從Web服務器映射到Objective C類(由Core Data處理的Xcode中建模的NSManagedObjects)。對於目標C類的每個屬性,我需要:如何將JSON對象映射到Objective C類?
- 確定是否該屬性的關鍵在JSON對象存在,
- 確定如果該鍵的值不爲空,並
- 傳值的模擬類的實例,如果條件1和2是真的
現在,我硬編碼這個序列中的各個屬性,所以每個屬性需要像下面的代碼:
// dictObject is the JSON object converted into a NSDictionary,
// and person is the instance of the modeled class
if ([dictObject objectForKey:@"nameFirst"] &&
[dictObject objectForKey:@"nameFirst"] != [NSNull null]) {
person.nameFirst = [dictObject objectForKey:@"nameFirst"];
}
而且需要的代碼很多處理各種類,這似乎缺憾而脆:任何名稱變更(或語言本地化)會導致映射失敗。
必須有更好的辦法......我錯過了什麼?
謝謝pokstad-之前沒有看到過。我下載了RestKit並一直在玩它...它爲應用程序增加了大量的大小 - 36MB的源文件夾 - 但可能是值得的。如果我使用它,肯定會接受你的答案。 (我仍然希望有人會回覆更「原生」的方法。) – Dan 2011-04-22 14:48:11
沒問題。不清楚你的意思是什麼。該ReskKit是專門爲基於可可的應用程序。此外,源代碼的大小几乎總是大於二進制大小,因此就編譯二進制大小而言,我不擔心36MB。 – pokstad 2011-04-22 23:45:00
公平的 - RestKit看起來像一個很好的解決方案,但是如果我實現它,我將學習如何實現RestKit,而不是學習更好的Obj-C技巧:)(儘管當然可以爭辯說學習實現框架很好_is_學習Obj-C更好。) – Dan 2011-04-23 00:01:06