猿问

NSFetchedResultController 在什么时候回更新数据?

小弟的问题是这样的:我在写网络程序做缓存的策略是在网络数据请求下来之前生成NSFetchedResultController然后网络数据请求下来后更新数据库,借用NSFetchedResultController的机制对界面进行更新。可是奇怪的是当我把网络数据请求下来更新到数据库以后之前生成的NSFetchedResultController并没有更新,也没有调用代理方法通知视图更新。即便是我在网络更新数据以后手动调用一次performFetch其中的数据也不会更新。
更加奇怪的是,如果我在网络数据请求结束以后按照同样的配置再生成一个NSFetchedResultController此时就有数据。我很确定在无论是手动调用performFetch还是重新生成NSFetchedResultController对象之前,数据库的内容确实得到了更新,这是我用SqlitePro进行查看的。
通过查阅苹果文档,我只能得到这样的信息:
Theresultsarrayreflectsthein-memorystateofmanagedobjectsinthecontroller’smanagedobjectcontext,nottheirstateinthepersistentstore.Thereturnedarraydoesnot,however,updateasmanagedobjectsareinserted,modified,ordeleted.
也就是说,NSFetchedResultController只能显示内存状态,而不能表示持久对象的状态,可是。。。我既然已经把对象保存起来,上下文中的对象状态应该已经改变了啊,这种情况下我应该怎么理解NSFetchedResultController的更新机制?求大神解释QAQ
肥皂起泡泡
浏览 364回答 2
2回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答