我有一个使用 Core Data 的基于文档的 (OS X) 应用程序,因此该文档是 NSPersistentDocument 的子类。当用户创建一个文档时,他/她指定一个设置来确定受管对象模型中特定实体具有的属性数量。例如,“棒球比赛”实体可以有 4 到 9 局属性,这取决于用户在创建文档时指定的数量。出于效率目的,托管对象模型是在文档创建时生成的,其中棒球比赛实体恰好包含指定的局数属性。因此,五局文档将具有与九局文档不同的管理对象模型。
要动态设置托管对象模型,我必须-(id)managedObjectModel
在文档中覆盖。这是微不足道的,我可以轻松地提供具有适当数量的局数的托管对象模型。但是,如果用户打开一个保存的文档(局数未知),我再次被要求通过它为文档提供其托管对象模型-(id)managedObjectModel
. 我的难题是,如果我不认识自己,我怎么能告诉文件它有多少局?托管对象模型是在运行时创建和设置的,因此明智的做法是在文档中添加某种属性,告诉我有多少局。我正在考虑基于每个文档类似于 NSUserDefaults 的东西,但不存在这样的东西。我能想到的唯一方法是存储任何明确给我局数的实体/属性,但在我给文档提供其托管对象模型之前,它是不可访问的!解决这个问题的正确方法是什么?