MrJ*_*rJD 19 cocoa-touch web-services core-data ios ios5
我一直在看NSIncrementalStore,因为我一直在研究使用核心数据与Web服务交互的最佳方式.
在阅读了Drew Crawford撰写的文章,编程指南,课程参考 和本教程后,我几次仍然在努力了解什么是NSIncremental商店,为什么以及何时使用它.
有人可以解释一下吗?
阅读mundi的答案后编辑我可以看到需要进一步的上下文.我正在研究将核心数据与我正在构建的Web服务结合使用.我试图找到在设备本地存储用户信息的最佳方法,并在有连接时发布到Web服务.我缺乏对核心数据的了解促使我进行了研究,但我无法完全理解其有用性NSIncrementalStore.
jdc*_*jdc 34
注意:当我在2012年写这篇文章并且细节已经改变时,这个API是最前沿的.如果您愿意,请随时更新.我目前没有参与任何Cocoa/ObjC项目,所以不幸的是,我不是一个保持最新状态的好人.似乎整体要点是正确的.
Core Data提供了一组有助于管理对象持久性的工具,即能够NSManagedObject从某种存储中保存然后获取对象集().
使用Core Data对象时,可以使用a NSManagedObjectContext来获取它NSPersistentStoreCoordinator.PSC又与一个或多NSPersistentStore个子类进行通信,这些子类处理商店的实际操作.(想想对数据库的创建/读取/更新/删除.)
Core Data支持两种主要的商店:NSPersistentStore和NSAtomicStore.持久性存储可以被认为是一个数据库:您可以从中逐步保存,更新和获取任意记录集.原子库是对象图的"全部或全部"表示.它旨在成为结构化文件的内存表示.
Core Data附带的商店类型包括:
NSSQLLiteStoreType (NSPersistentStore)NSInMemoryStoreType(NSPersistentStore)NSXMLStoreType (NSAtomicStore)NSBinaryStoreType (NSAtomicStore)NSPersistentStore被明确禁止被子类化,所以直到现在,还没有办法创建自己的非原子商店后端.也就是说,如果你想要持久地查询对象的表示而不是一个大块("加载整个图形","保存整个图形"),那你就不幸了.直到iOS5推出NSIncrementalStore.
NSIncrementalStore是一个抽象类(后代NSPersistentStore),它实现的方法是在您控制的数据存储和Core Data世界之间提供适配器.您可以使用它来包装远程API,或者如果您非常倾向于可以包装NULevelDB或NanoStore之类的东西(尽管我不确定您为什么这样做).
您将使用NSIncrementalStore通过Core Data访问远程服务器.您不必读取和写入本地文件,而是将请求推送到服务器并获得回复,然后将其推送到Core Data.同样用于保存等
但请注意,这不是一件容易的事.这是一个非常强大的功能,但除非你是核心数据使用方面的专家,否则我会强烈反对它,因为除非你对Core Data与存储层的交互方式有很多了解,否则有很多机会自己动手.作品.
如果使用uploaded解决您的问题,那么请改为.
简而言之,如果您将SQLite存储与Core Data一起使用,那么您已经在使用增量存储.增量存储的所有好处(即主要不必将整个存储加载到内存中)已经可供您使用.
至于NSIncrementalStoreAPI 的具体应用,我建议您首先确定要解决的问题.如果您需要此API,则将由您的编程任务的特定需求决定.
编辑以回答问题编辑
我只想这样做:在设备上的Core Data实体中,您可以拥有一个属性BOOL uploaded.当Web服务可用时,启动上载并拉出所有对象uploaded.
要上传,将您的物体进入NSArray和NSDictionary,也许成JSON格式,并POST到您的网站.当网站响应它保存数据时,将所有对象标记为uploaded.
| 归档时间: |
|
| 查看次数: |
4929 次 |
| 最近记录: |