检查核心数据中是否存在项目有效

时间:2016-09-24 19:05:33

标签: ios swift unit-testing core-data

所以我浏览堆栈以获得我的问题的答案,每个人都说计数请求是要走的路。当我在我的应用上运行单元测试时,我发现这是假的。

  for number in largeNumber {  //large number is 1000

let fetch = try self.context.fetch(fetchRequest)

 }  
操作花了0.2秒!!

,而

{{1}}

//操作耗时0.158秒!

所以大家都在喋喋不休地说计数请求更有效率。如果有的话,它会变得更糟。也就是说,是否有更有效的方法来检查核心数据中是否存在值

1 个答案:

答案 0 :(得分:0)

您的测试结果可能是由于两个版本中所做的不同。 计数返回找到的托管对象的数量。 获取可能会填充属性,关系等。

核心数据可能会缓存此信息,以便不必重复相同的提取请求。结果(在您的示例中)可能相当于1个获取请求和999个无操作。

Count应该是最有效的,因为它不会填充托管对象。如果循环1000次但每次传递的谓词不同会发生什么?