Core data 在核心数据中记录数据集大小信息的最佳方法是什么?

Core data 在核心数据中记录数据集大小信息的最佳方法是什么?,core-data,Core Data,现在,每当我需要访问我的数据集大小时(可能非常频繁),我都会在managedObjectContext上执行countForFetchRequest。这是件坏事吗?我应该改为在本地管理计数吗?我走这条路线的原因是为了确保我得到100%的正确答案。由于核心数据可以从多个位置访问(例如,也可以通过NSFetchedResultsController访问),因此很难在本地保持准确的计数。-countForFetchRequest:始终在持久存储中计算。使用Sqlite存储时,这将导致执行IO 建议的战

现在,每当我需要访问我的数据集大小时(可能非常频繁),我都会在managedObjectContext上执行countForFetchRequest。这是件坏事吗?我应该改为在本地管理计数吗?我走这条路线的原因是为了确保我得到100%的正确答案。由于核心数据可以从多个位置访问(例如,也可以通过NSFetchedResultsController访问),因此很难在本地保持准确的计数。

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

建议的战略:

缓存从-countForFetchRequest:返回的计数。 观察您自己上下文的NSManagedObjectContextObjectsIDChangeNotification。 观察相关上下文的NSManagedObjectContextDidSaveNotification。 对于简单的no-fetch谓词,您可以根据通知中包含的信息更新计数,而无需额外IO

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