我将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