在Core Data Document中存储特定于文档的设置的最佳方法是什么?

时间:2009-07-24 23:49:24

标签: cocoa core-data conceptual

我在我的应用程序中使用了Core Data支持的NSPersistantDocument

每个文档都有许多仅与该文档相关的设置。例如,文档需要保存通讯簿组的唯一ID,以便以后更新它。

我正在考虑接近这个问题的方法是让另一个模型DocumentSetting具有两个属性;一个键和一个值,它保存NSString

理想情况下,我想要与NSUserDefaults类似的内容,但存储在文档中。

以前有人这样做过吗?有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:4)

NSPersistentStore上的setMetadata:方法可用于存储每个文档的设置。可以找到有关如何使用商店元数据的文档here。正如文档中所建议的那样,可以放在那里的内容存在一些大小限制。如果您需要存储比几个键/值对更重要的内容,我建议您在数据模型中创建一个新实体来存储此类数据。

答案 1 :(得分:2)

正如Brian所说,持久性商店的元数据是这类事物的好地方。或者,您也可以添加单独的实体(我过去使用过这两种方法)。请记住,如果此DocumentSetting实体与文档模型中的其他实体没有关系,则可以将其放入单独的xcdatamodel中,并使用-[NSManagedObjectModel mergedModelFromBundles:]在运行时合并模型。至少通过这种方式,您可以将“源”模型文件保持隔离状态。

就策略而言,除非您要拥有大量这些文档设置或想要单独查询它们,否则您可以使用可转换属性并在{{{{}}中存储(已存档)NSDictionary 1}}实体。这会使感觉更像DocumentSettings API,感觉基本上就像字典。