Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Cocoa 核心数据,分类搜索-可能吗?_Cocoa_Search_Core Data - Fatal编程技术网

Cocoa 核心数据,分类搜索-可能吗?

Cocoa 核心数据,分类搜索-可能吗?,cocoa,search,core-data,Cocoa,Search,Core Data,在我的应用程序中,我必须从核心数据请求获取的数组中的NSStrings数组中搜索字符串。获取的数组包含大约30000个条目,并且它一定会增长,字符串数组最多可以包含数十万个字符串。 我现在要做的是从核心数据存储中选择所有字符串,并在字符串数组中循环,创建一个NSPredicate,并使用它过滤获取的核心数据数组。 我想,如果我事先对这两个数组进行排序,就可以缩小每个后续搜索的范围,但是否有可能使用谓词从某个位置开始搜索数组 致以最良好的祝愿, Timofey.您不想从核心数据中获取所有字符串。它

在我的应用程序中,我必须从核心数据请求获取的数组中的NSStrings数组中搜索字符串。获取的数组包含大约30000个条目,并且它一定会增长,字符串数组最多可以包含数十万个字符串。 我现在要做的是从核心数据存储中选择所有字符串,并在字符串数组中循环,创建一个NSPredicate,并使用它过滤获取的核心数据数组。 我想,如果我事先对这两个数组进行排序,就可以缩小每个后续搜索的范围,但是否有可能使用谓词从某个位置开始搜索数组

致以最良好的祝愿,
Timofey.

您不想从核心数据中获取所有字符串。它很慢,占用大量内存。只需使用NSPredicate筛选出所需的字符串,为其提供NSFetchRequest并仅获取所需的结果。您还可以将NSSortDescriptor添加到NSFetchRequest以对结果进行排序

您可以通过调用-[NSFetchRequest setSortDescriptors:]对提取请求返回的结果进行排序。还是你需要更复杂的东西?我知道。首先想到的是手动比较数组元素。也就是说,你迭代其中一个数组,将当前元素与另一个数组的当前元素进行比较,如果它们相等,你继续两个数组的下一个元素,如果它们不相等,你继续一个数组的下一个元素,现在我已经写了,这似乎是合理的解决方案。但是有没有更自动的方法呢?这看起来很普通。让我确定我明白了。您正在尝试将两组字符串进行并集吗?两者都可能非常大。一个或两个存储在核心数据中?不完全是。我需要知道作为输入数组而没有存储的字符串是否存在于存储中,如果存在,它们在持久存储中具有哪些属性。事实上,与使用NSPredicate过滤结果相比,从数据存储中获取所有实体的速度非常快。我确实按照实体的一个字符串属性对实体进行排序,这允许我将它们与另一个排序的字符串数组进行比较。至于内存,据我所知,核心数据负责这一点,只有在访问相应的元素时才能获取整个结果集的有限部分。