我花了几天时间学习和编写 NSCoding,终于让它工作了。但是,归档和取消归档(相当复杂的)对象图需要很长时间,这是 Not Acceptable 。在网上搜索了一段时间后,我认为更好的方法是使用核心数据。
您是否建议 1) 我应该将我的所有类重写为 NSManagedObject 的子类,或者 2) 我是否应该在我的每个类中创建一个 NSManagedObject 的实例变量,以便对类的任何更改也更新其核心数据表示?无论采用哪种方式,都需要对现有类进行重大更改,而且如果它改变了类的初始化方式,我认为我还必须更新大量单元测试用例。
您有什么建议?我真的不想再走错路了...
谢谢!
最佳答案
如果您使用 Core Data,我会推荐 1)。
2) 没有多大意义。例如,假设 A* a1
和 A* a2
引用相同的 B* b
。如果 A
和 B
是 NSManagedObject
的子类,这种关系可以很容易地保存到文件中,然后从文件中检索。但是如果 A
和 B
有 NSManagedObject
实例作为 ivars,你如何维护这两个 A
引用的关系到一个 B
?你将被迫编写一大堆粘合代码,这些代码基本上由 Core Data API 提供。
如果您决定使用 Core Data,我可以提供的一个非常重要的建议是从头到尾非常、非常仔细阅读 Apple 的文档,并从第一天起就抵制编写代码的冲动。 Core Data 是一组相当大的 API,在开始编写代码之前掌握整个结构将为您节省很多天。
关于objective-c - 我是否应该创建子类 NSManagedObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4633699/