现在,只要我需要访问我的数据集大小(并且它可以非常频繁),我就在managedObjectContext上执行countForFetchRequest。这是一件坏事吗?我应该在本地管理计数吗?我走这条路的原因是为了确保我得到100%正确答案。由于Core Data可以从多个地方访问(例如,通过NSFetchedResultsController),因此很难在本地保持准确的计数。
答案 0 :(得分:0)
-countForFetchRequest:
始终在持久性存储中进行评估。使用Sqlite存储时,这将导致执行IO。
建议的策略:
-countForFetchRequest:
返回的计数。NSManagedObjectContextObjectsDidChangeNotification
。NSManagedObjectContextDidSaveNotification
相关背景。对于简单情况(无获取谓词),您可以从通知中包含的信息更新计数,而无需额外的IO。
或者,您可以根据需要通过-countForFetchRequest:
使您的缓存计数无效并刷新。