来自苹果 CoreData 框架文档,
托管对象模型:模型允许 Core Data 从持久存储中的记录映射到您在应用程序中使用的托管对象。参考这里。
持久对象存储:应用程序中的对象与持久存储中的记录之间的持久对象存储映射。参考这里。
从这些描述中,两者的含义相同,将持久存储记录映射到托管对象。
我想知道托管对象模型和持久对象存储之间的独特区别是什么。
托管对象模型是Core Data 应用程序中使用的模式的一个实例NSManagedObjectModel
并描述了该模式。它是从模型文件
中加载的,该文件包含您在核心数据模型检查器中定义的所有实体描述及其属性和关系。所以模型描述了你的对象。
持久对象存储是的一个实例NSPersistentStore
,它管理进出持久存储的事务,持久存储是存储实际数据的存储库。在许多情况下,持久存储是 SQLite 文件,但它也可以是 XML 文件、二进制文件或临时数据的“内存”存储。
持久存储协调器同时使用:NSManagedObjectModel
and(一个或多个)
NSPersistentStore
,将托管对象从存储加载到应用程序中,并将更改的对象写回存储中。
不管您的问题经过了很长时间,但它仍然是一个明显的问题,可以帮助其他人澄清和深入探讨这个话题。所以,不要离马丁的答案太远,而是为你做进一步的解释:
是的,Persistent Store 和 Persistent Object Store 完全是两个不同的事情
让我们将 Persistent Store 视为“DataFile.xml / DataFile.sqlite / DataFile.customExtension 等”。因为它们是文件,所以所有的记录都以Script、Binary等形式存储。例如:< entityname > Transaction </entity > OR < currency >USD</currency >(无空格 - 抱歉网站不允许添加这些(<...>))
在实际编程中,你甚至不需要考虑 Persistent Object Store。这是 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: 消息时,Core Data 会为您创建适当类型的存储。”
希望这对你有帮助。