在Core Data中保留数据集大小信息的最佳方法是什么?

时间:2009-07-29 01:28:34

标签: core-data

现在,只要我需要访问我的数据集大小(并且它可以非常频繁),我就在managedObjectContext上执行countForFetchRequest。这是一件坏事吗?我应该在本地管理计数吗?我走这条路的原因是为了确保我得到100%正确答案。由于Core Data可以从多个地方访问(例如,通过NSFetchedResultsController),因此很难在本地保持准确的计数。

1 个答案:

答案 0 :(得分:0)

-countForFetchRequest:始终在持久性存储中进行评估。使用Sqlite存储时,这将导致执行IO。

建议的策略:

  • 缓存从-countForFetchRequest:返回的计数。
  • 根据您自己的情况观察NSManagedObjectContextObjectsDidChangeNotification
  • 观察NSManagedObjectContextDidSaveNotification相关背景。

对于简单情况(无获取谓词),您可以从通知中包含的信息更新计数,而无需额外的IO。

或者,您可以根据需要通过-countForFetchRequest:使您的缓存计数无效并刷新。