objective-c - 我是否应该创建子类 NSManagedObject?

标签 objective-c cocoa design-patterns ios core-data

我花了几天时间学习和编写 NSCoding,终于让它工作了。但是,归档和取消归档(相当复杂的)对象图需要很长时间,这是 Not Acceptable 。在网上搜索了一段时间后,我认为更好的方法是使用核心数据。

您是否建议 1) 我应该将我的所有类重写为 NSManagedObject 的子类,或者 2) 我是否应该在我的每个类中创建一个 NSManagedObject 的实例变量,以便对类的任何更改也更新其核心数据表示?无论采用哪种方式,都需要对现有类进行重大更改,而且如果它改变了类的初始化方式,我认为我还必须更新大量单元测试用例。

您有什么建议?我真的不想再走错路了...

谢谢!

最佳答案

如果您使用 Core Data,我会推荐 1)。

2) 没有多大意义。例如,假设 A* a1A* a2 引用相同的 B* b。如果 ABNSManagedObject 的子类,这种关系可以很容易地保存到文件中,然后从文件中检索。但是如果 ABNSManagedObject 实例作为 ivars,你如何维护这两个 A 引用的关系到一个 B?你将被迫编写一大堆粘合代码,这些代码基本上由 Core Data API 提供。

如果您决定使用 Core Data,我可以提供的一个非常重要的建议是从头到尾非常非常仔细阅读 Apple 的文档,并从第一天起就抵制编写代码的冲动。 Core Data 是一组相当大的 API,在开始编写代码之前掌握整个结构将为您节省很多天。

关于objective-c - 我是否应该创建子类 NSManagedObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4633699/

相关文章:

ios - 更改按钮文本在 iOS 上不起作用

iphone - 将 .xib 文件添加到 Storyboard 中的 ViewController

ios - Objective-C 发送按键事件到 webview

macos - 创建一个作为守护进程运行的简单 Hello World 工具

c# - 使用标准 .Net 异步模式的优势?

iphone - iphone 中的 ssl 套接字,可能吗?

c++ - 带有 LANG=en_US.UTF-8 的 MacOS 10.6 上的 std::locale 损坏

ios - 将自定义 ViewController 的实例连接到 View

c++ - 建议的顺序相关操作的流控制结构

java - 装饰者模式,装饰包含不同方法的子类