在没有 NSFetchedResultsController 或 NSArrayController 的情况下使用 AFIncrementalStore

Posted

技术标签:

【中文标题】在没有 NSFetchedResultsController 或 NSArrayController 的情况下使用 AFIncrementalStore【英文标题】:Using AFIncrementalStore without NSFetchedResultsController or NSArrayController 【发布时间】:2013-10-13 01:59:24 【问题描述】:

我试图在没有 NSFetchedResultsController 或 NSArrayController 的情况下获取一些数据。问题在于,由于 AFIncrementalStore 的异步特性,我总是得到过时的数据(或者如果没有获取数据,则没有数据)数据。

有没有推荐的方法来处理这个问题?

【问题讨论】:

【参考方案1】:

我认为解决这个问题的首选方法是使用NSFetchedResultsControllers(至少在 ios 上)。如果您真的不想使用它,您可能需要订阅这些通知之一,具体取决于您希望收到的更改的粒度:

NSManagedObjectContextObjectsDidChangeNotification NSManagedObjectContextDidSaveNotification

然后在发布这些通知之一时重新获取数据。

【讨论】:

【参考方案2】:

您还可以尝试使用 AFIncrementalStore 通知来通知何时获取远程数据以更新 UI 和您的对象。

AFIncrementalStoreContextDidFetchRemoteValues

https://github.com/AFNetworking/AFIncrementalStore/blob/master/AFIncrementalStore/AFIncrementalStore.m#L29

【讨论】:

以上是关于在没有 NSFetchedResultsController 或 NSArrayController 的情况下使用 AFIncrementalStore的主要内容,如果未能解决你的问题,请参考以下文章

又一个 NSInternalInconsistencyException,但使用 NSFetchedResultsController

更新相关 NSManagedObject 时更新 UITableView

Core Data 中计算的持久属性

NSFetchedResultsController:具有相同键的两个排序描述符不起作用。一个降序用于部分,另一个升序用于行

属性 '...' 没有初始化器,也没有在构造函数中明确分配

有没有啥方法可以在没有 Json 的 NSData 的情况下单独发布参数