来自Apple CoreData框架文档,
托管对象模型:模型允许Core Data从持久性存储中的记录映射到您在应用程序中使用的托管对象。请参阅here。
持久对象存储:持久对象存储在应用程序中的对象和持久存储中的记录之间进行映射。请参阅here。
从这些描述中,两者的含义与将托管对象映射持久存储记录的含义相同。
我想知道托管对象模型和持久对象库之间的唯一区别是什么。
答案 0 :(得分:3)
托管对象模型是NSManagedObjectModel
的一个实例,描述了您的Core Data应用程序中使用的架构。
它是从模型文件加载的
其中包含所有实体描述及其属性和关系
您在Core Data Model检查器中定义的。所以模型描述你的对象。
持久对象库是NSPersistentStore
的一个实例,它管理着
来自持久性商店的交易,这是存储库所在的位置
存储实际数据。在许多情况下,持久存储是一个SQLite文件,但它也可以是XML文件,二进制文件或临时数据的“内存”存储。
持久性商店协调员同时使用:NSManagedObjectModel
和(一个或多个)
NSPersistentStore
s,加载托管
从商店到应用程序的对象,并将更改的对象写回商店。
答案 1 :(得分:1)
无论你的问题通过了很长时间,但它仍然是一个明显的问题,可能有助于其他人澄清&深入探讨这个话题。所以,不要离马丁的答案太远,而是为你做进一步的解释:
是的,持久存储和持久对象存储完全是两个不同的事情
让我们将Persistent Store视为" DataFile.xml / DataFile.sqlite / DataFile.customExtension等"。因为它们是文件,所以所有记录都存储为Script,Binary等。例如:< entityname>交易< / entity>或者<货币> USD< / currency> (没有空间 - 很抱歉该网站不允许添加这些(< ...>))
在实际编程中,您甚至不需要考虑持久对象存储。它是XCode所采用的自动过程。它是一个抽象的计算过程,而不是特定的概念或特定的利益(在核心数据栈中)
参考Apple关于核心数据的指南(2011年10月 - 很老但仍保持活跃) https://developer.apple.com/library/prerelease/content/documentation/DataManagement/Devpedia-CoreData/persistentObjectStore.html#//apple_ref/doc/uid/TP40010398-CH31-SW1
- > "您不直接创建持久对象库。相反,当您向持久性存储协调器发送addPersistentStoreWithType:configuration:URL:options:error:message时,Core Data会为您创建适当类型的存储。"
希望这对你有所帮助。