NSPredicate仅查找第一场比赛

时间:2014-03-26 09:55:32

标签: ios objective-c core-data nsarray nspredicate

在Core Data中,我有一个名为UUID的字段,它是一个唯一的ID。

现在,我想获取一个特定的UUID记录。为此,我需要使用NSPredicate。但据我所知,谓词将搜索整个数据存储。例如,假设有10条记录,我想搜索值UUID的{​​{1}}。在发现2后,谓词将继续搜索(占用额外的CPU周期)。

我想知道我们是否可以优化它。如何在谓词找到第一个对象后停止搜索。

1 个答案:

答案 0 :(得分:2)

在核心数据中,在获取请求上使用setFetchLimit:来限制结果数量。如果您要经常使用它,也可以为UUID属性添加索引。

如果要在数组上运行谓词而限制命中,则需要自己迭代数组(enumerateObjectsWithOptions:usingBlock:)并将谓词显式应用于每个项目(evaluateWithObject:)。然后,当您找到匹配项时,使用块的BOOL *stop参数来结束迭代。