NSPredicate 可以使用不区分大小写的搜索与 Core Data IN 比较吗? (Swift 4)

Can NSPredicate use case insensitive search with Core Data IN comparison? (Swift 4)

在我的例子中,我在 Core Data 中有一个对象,其 id 字段是一个字符串。该字段由不同平台上的多个客户端填充,应该是 GUID/UUID。理想情况下,这些应该始终是大写,但并非所有客户端实现都这样做,存储它们的代码也没有考虑到这一点。让我们暂时忽略明显的架构错误。我需要的是一种以不区分大小写的方式搜索这些内容的方法。因为我现在只是从存储中获取所有内容,然后使用 Swift 数组过滤功能过滤它们。这可行,但效果不佳,而且当数据集变大时,将需要大量 RAM。我尝试使用像

这样的谓词

fetchRequest.predicate = NSPredicate(format: "someId IN [cd] %@", ids)

其中 ids 是一个字符串数组。这是行不通的。可以使用带有块的谓词来解决吗?还有其他解决方案吗?

谢谢 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)