NSDictionary与自定义对象

Bes*_*esi 18 iphone objective-c nsdictionary nsobject ios

问题很简单:当我创建一个新的API或Service Class时,我应该为正在传递的对象创建一个自定义类,或者我应该坚持一个NSDictionary简单地以键值样式格式保存数据的类.

显然有利有弊,但你们认为哪个是使用一个而不是另一个的门槛?

NSDictionary:

+无依赖关系
+非常灵活
+常用的
+内置支持NSCoding
-结构未定义 - >运行时错误

自定义对象:

+结构定义的
+属性样访问器:myObject.someProperty -可以导致rel.嵌套对象的大量类

更新:jbat100包含的备注

Sim*_*Lee 11

我通常有一组域模型,它们更适合iPhone开发的MVC方法.拥有特定对象还可以使您更容易实施类型安全,并且从长远来看也可以降低复杂性.如果您有包含NSArrays和更多NSDictionaries等的NSDictionaries来表示您的对象图,它很快就会变得无法管理.


jba*_*100 9

这实际上取决于您对数据模型的预期变化.一旦拥有基于自定义类的数据模型处理更改可能会非常棘手,尤其是当您拥有具有不同版本模型的归档(NSCoding内容)时(在已经发布的应用程序版本中),您必须非常小心以确保向后兼容性和避免令人讨厌的运行时间惊喜.在这方面,基于NSDictionary的模型,正如你所说的更灵活.但是,它们不允许自定义类执行的所有自定义检查和行为.另外自定义类使得数据模型对于不熟悉代码的编码人员更加明确,根据我的经验,开发人员在处理基于NSDictionary的模型时经常会变得草率(特别是在经验不足的情况下),这很快就会导致难以理解的混乱,所以如果你下去那么路线,文件很好,纪律严明!