core-data - 使用 CoreData 进行良好的设计?

标签 core-data model nsmanagedobject

为了使用 CoreData,许多开发人员从 NSManagedObject 继承模型对象。

但是如果我想让我的模型对象独立于正在使用的存储机制(也许我会在根本不需要持久性的项目中重用它们)怎么办?

到目前为止,我的解决方案是为每个模型类创建一个继承自 NSManagedObject 的类,该类具有对模型对象的引用并加载和存储它。

什么是更好的方法?

最佳答案

目前还没有办法创建可以由 Core Data 持久保存并与 Core Data 完全断开连接的实体。任何继承自 NSManagedObject 的东西都带有一些包袱,其中最重要的是,如果没有为每个对象编写一些自定义代码,您就无法序列化它。

您可以创建一些代表您的每个实体的协议(protocol),您的核心数据托管对象遵循这些协议(protocol),就像您的独立对象一样。您可以在 NSObject 上使用仅符合实体协议(protocol)的类别来实现 Core Data 和独立实体共享的行为。通过使类别仅应用于符合实体协议(protocol)的类,您可以防止类别应用于每个 NSObject(非常糟糕)。相反,它仅适用于您实现的符合该类别的类。这是我发现在核心数据实体和独立实体之间共享一些代码的唯一方法。

为了防止每次更改模型时丢失对核心数据实体所做的任何更改,我使用 mogenerator重新生成实体而不是 XCode。这使我可以将特定于核心数据的内容与实体上所需的任何自定义(例如为实体应用协议(protocol))分开。如果您使用 XCode 3,mogenerator 包含一个处理 XCode 集成的插件。如果您使用的是 XCode 4,则该插件无法工作,但在 DevForums I wrote up a tutorial 上另一位开发人员的帮助下关于让 mogenerator 工作。

关于core-data - 使用 CoreData 进行良好的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484805/

相关文章:

iphone - NSManagedObject 到 JSON

php - 当先前调用另一个模型时,如何将配置传递给模型?

ruby-on-rails - 将 Rails 模型文件组织到子目录中

visual-studio-2010 - 数据读取器与指定的不兼容...类型的成员 'Finalised' 在数据读取器中没有相应的列

ios - 核心数据 : filter many to may relationship with NSPredicate

ios - 神秘的核心数据故障崩溃

multithreading - 核心数据 : warning: Unable to load class named

ios - 在后台保存导致响应时间延迟(iOS)

objective-c - "Unrecognized Selector"- 将 AppDelegate 的 NSManagedObjectContext 导入其他类时出错(OSX)

cocoa - 组获取/数据更新(类结构设计)