NSArray作为Core Data fetchRequest中的参数

时间:2016-09-10 13:47:44

标签: ios core-data nsfetchrequest

我有大约10.000个实体的数据库和50个NSString元素的动态NSArray。想检查数据库中是否存在这些元素,并创建存在的新数组。我不需要返回整个实体,只需返回那些NSString标题(与NSString数组中的相同)

NSPredicate应该将entity.title与NSString元素进行比较,并使用EXACT匹配。


最好的处理器/内存有效方法是什么?

1 个答案:

答案 0 :(得分:2)

我认为您应该在谓词中使用'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是否适合您。