[英]NSArray as parameter in Core Data fetchRequest
我有大约10.000个实体的数据库和50个NSString元素的动态NSArray。 想要检查数据库中是否存在每个元素,并创建一个新的存在数组。 我不需要返回整个实体,只需返回那些NSString标题(与NSString数组中的标题相同)
NSPredicate应该将实体。标题与具有完全匹配项的NSString元素进行比较。
最好的,处理器/内存有效的方法是什么?
我认为您应该在谓词中使用“ in”运算来获得结果。 这样,您就可以利用数据库来执行比较,而不必带回所有10,000条记录来进行比较。 如果采用这种方法,则代码可能如下所示:
// Assuming that arrayName is your existing array of values to match, that
// EntityName is the object in CoreData that you’re looking at, and context
// is your moc
var newArray: [String] = []
let fetchRequest = NSFetchRequest<EntityName>(entityName: "EntityName")
fetchRequest.predicate = NSPredicate(format: "title in %@", arrayName)
do {
result = try context.fetch(fetchRequest)
for element in result {
newArray.append(element.title)
}
} catch {
… manage any errors …
}
注意-我的目标是与Swift 3.0兼容的代码-不知道swift是否是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.