Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSArray作为核心数据获取请求中的参数_Ios_Core Data_Nsfetchrequest - Fatal编程技术网

Ios NSArray作为核心数据获取请求中的参数

Ios NSArray作为核心数据获取请求中的参数,ios,core-data,nsfetchrequest,Ios,Core Data,Nsfetchrequest,我有大约10000个实体的数据库和50个NSString元素的动态NSArray。要检查数据库中是否存在这些元素中的每一个,并创建存在的元素的新数组。我不需要返回整个实体,只需要返回那些NSString标题(与NSString数组中的标题相同) NSPredicate应将entity.title与NSString元素进行精确匹配的比较。 什么是最好且处理器/内存效率最高的方法?我认为您应该在谓词中使用“in”运算来获得结果。这使您可以利用数据库来执行比较,而不是带回所有10000条记录来进行比

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

NSPredicate应将entity.title与NSString元素进行精确匹配的比较。



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

我认为您应该在谓词中使用“in”运算来获得结果。这使您可以利用数据库来执行比较,而不是带回所有10000条记录来进行比较。如果采用这种方法,代码可能如下所示:

// 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 …
}
//假设arrayName是要匹配的现有值数组
//EntityName是您正在查看的CoreData中的对象和上下文
//这是你的主运行中心吗
var newArray:[字符串]=[]
let fetchRequest=NSFetchRequest(entityName:“entityName”)
fetchRequest.predicate=NSPredicate(格式:“标题在%@”,arrayName)
做{
结果=try context.fetch(fetchRequest)
对于结果中的元素{
newArray.append(element.title)
}
}抓住{
…管理任何错误…
}

注意-我的目标是与Swift 3.0兼容的代码-不确定您的目标是否是Swift。

谢谢。确切地说,我不想把整张桌子都拖走。核心数据应该完成所有工作。这个解决方案是最优的吗?如果没有更多的想法,我会检查这一点作为答案。如果你还没有标题属性,也可能值得在标题属性上添加索引。pbasdf建议的索引可能会很有用,具体取决于你应用程序中标题的使用情况,但除此之外,我不知道有什么可以提高这种方法的效率。我已经用索引测试过了。在现实场景中应该足够快。