就我而言,我在Core Data中有一个对象,其ID字段是字符串。该字段由不同平台上的多个客户端填充,并且应该是GUID / UUID。理想情况下,这些应该始终是大写的,但并非所有的客户端实现都可以这样做,并且用于存储它们的代码也不能解决这个问题。现在让我们忽略明显的体系结构错误。我需要的是一种不区分大小写的搜索方式。对于我来说,现在只需从存储中获取所有内容,然后使用Swift数组过滤器功能对其进行过滤。这种方法有效,但是无效,并且当数据集变大时,将需要大量RAM。我尝试使用像这样的谓词
fetchRequest.predicate = NSPredicate(format: "someId IN [cd] %@", ids)
其中id是一个String数组。这行不通。可以使用带块谓词来解决吗?还有其他解决方案吗?
答案 0 :(得分:0)
谢谢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)