在Core Data中,我有一个名为UUID
的字段,它是一个唯一的ID。
现在,我想获取一个特定的UUID
记录。为此,我需要使用NSPredicate
。但据我所知,谓词将搜索整个数据存储。例如,假设有10条记录,我想搜索值UUID
的{{1}}。在发现2
后,谓词将继续搜索(占用额外的CPU周期)。
我想知道我们是否可以优化它。如何在谓词找到第一个对象后停止搜索。
答案 0 :(得分:2)
在核心数据中,在获取请求上使用setFetchLimit:
来限制结果数量。如果您要经常使用它,也可以为UUID属性添加索引。
如果要在数组上运行谓词而限制命中,则需要自己迭代数组(enumerateObjectsWithOptions:usingBlock:
)并将谓词显式应用于每个项目(evaluateWithObject:
)。然后,当您找到匹配项时,使用块的BOOL *stop
参数来结束迭代。