我一直看到NSIncrementalStore
当我一直在研究使用核心数据与 Web 服务交互的最佳方式时,这个问题就出现了。
看完之后德鲁·克劳福德的文章 http://sealedabstract.com/code/nsincrementalstore-the-future-of-web-services-in-ios-mac-os-x/, 编程指南 http://developer.apple.com/library/mac/#documentation/DataManagement/Conceptual/IncrementalStorePG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010706, 类参考 https://developer.apple.com/documentation/CoreData/Reference/NSIncrementalStore_Class/Reference/NSIncrementalStore.html 和这个教程 https://gist.github.com/1860108每次我仍然很难理解什么NSIncremental
商店是什么,为什么以及何时使用它。
有人可以解释一下吗?
Edit
阅读 Mundi 的答案后,我发现需要一些进一步的背景信息。我正在考虑将核心数据与我正在构建的网络服务结合使用。我正在尝试找到将用户信息本地存储在设备上并在有连接时发布到网络服务的最佳方法。我对核心数据的缺乏促使我进行研究,但我无法完全理解它的用处NSIncrementalStore
.
注意:当我在 2012 年写这篇文章时,这个 API 是最前沿的,并且细节已经发生了变化。如果您愿意,请随时更新此内容。我目前没有从事任何 Cocoa/ObjC 项目,因此不幸的是,我不是一个保持最新状态的好人。看来大体的主旨是正确的。
Core Data 提供了一组帮助管理对象持久性的工具,即保存然后取回对象集的能力(NSManagedObject
)来自某种存储。
当您使用 Core Data 对象时,您可以使用NSManagedObjectContext
,您可以从NSPersistentStoreCoordinator
。 PSC 依次与一名或多名NSPersistentStore
子类,处理商店的实际操作。 (想想对数据库的创建/读取/更新/删除。)
Core Data 支持两种主要类型的存储:NSPersistentStore
and NSAtomicStore
。持久存储可以被认为是一个数据库:您可以增量地保存、更新和从中获取任意记录集。原子存储是对象图的“全有或全无”表示。它旨在成为结构化文件的内存中表示。
Core Data 附带的商店类型有:
-
NSSQLLiteStoreType
(NSPersistentStore
)
-
NSInMemoryStoreType
(NSPersistentStore
)
-
NSXMLStoreType
(NSAtomicStore
)
-
NSBinaryStoreType
(NSAtomicStore
)
NSPersistentStore
明确禁止子类化,因此到目前为止,还没有办法创建自己的非原子存储后端。也就是说,如果您想零碎地持久化和查询对象的表示,而不是一大堆(“加载整个图表”,“保存整个图表”),那么您就不走运了。直到iOS5推出NSIncrementalStore
.
NSIncrementalStore
是一个抽象类(源自NSPersistentStore
)您实现的方法可以在您控制的数据存储和核心数据世界之间提供适配器。您可以使用它来包装远程 API,或者如果您愿意,您可以包装类似的东西NU级别数据库 https://github.com/nulayer/NULevelDB or 纳米商店 https://github.com/tciuro/NanoStore(虽然我不确定你为什么要这样做)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)