繁体   English   中英

NSArray作为核心数据fetchRequest中的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM