在我的例子中,我在 Core Data 中有一个对象,其 id 字段是一个字符串。该字段由不同平台上的多个客户端填充,并且应该是 GUID/UUID。理想情况下,这些应该始终是大写,但并非所有客户端实现都这样做,存储它们的代码也没有考虑到这一点。让我们暂时忽略明显的架构错误。我需要的是一种以不区分大小写的方式搜索这些内容的方法。因为我现在只是从存储中获取所有内容,然后使用 Swift 数组过滤功能过滤它们。这可行,但效果不佳,而且当数据集变大时,将需要大量 RAM。我尝试使用像
这样的谓词fetchRequest.predicate = NSPredicate(格式: "someId IN [cd] %@", ids)
其中 ids 是一个字符串数组。这是行不通的。可以使用带有 block 的谓词来解决吗?还有其他解决方案吗?
最佳答案
感谢 Martin R 的评论,它让我找到了适合我的解决方案。我最终得到了这个解决方案。这不是我想要的,但知道 ids 数组很少有超过 10 个条目,现在它会这样做,因为它至少解决了内存问题。希望 Swift 和 Core Data 将来能提供更好的解决方案。
var predicates = [NSPredicate]()
for id in idList
{
predicates.append(NSPredicate(format: "temporaryId LIKE[c] %@", id))
}
fetchRequest.predicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates)
关于swift - NSPredicate 可以使用不区分大小写的搜索与 Core Data IN 比较吗? ( swift 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54983401/