0

我目前正在为我的应用程序使用搜索功能。该应用程序使用 CoreData。现在这是我的问题。

我无法决定使用哪种方法,是否应该使用 NSMutableArray 方法来查找所有数据中的字符串。

NSArray 方法:这只是为了说明我对 NSArray 搜索功能的意思。

NSArray* inputArray = [NSArray arrayWithObjects:@"dog", @"cat", @"fat dog", @"thing", @"another thing", @"heck here's another thing", nil];

NSMutableArray* containsAnother = [NSMutableArray array];
NSMutableArray* doesntContainAnother = [NSMutableArray array];

for (NSString* item in inputArray)
{
if ([item rangeOfString:@"another"].location != NSNotFound)  
[containsAnother addObject:item];
}

CoreData 方法:仍在努力,抱歉。我有一个想法如何实现它。

问题是,由于 CoreData 与 SQLite 一起使用,我相信最好使用它,因为据说搜索会很有效。但这是我的看法。我只是想知道哪种方法最有效,因为当开始保存大量记录时很可能会使用此功能。

4

1 回答 1

1

通常,带有谓词的托管对象往往更快,因为它们可以使用 SQL 搜索引擎,这可以更快(并且内存效率更高)。

在这种情况下,看起来您必须将整个表复制到内存中,然后选择某些项目,这肯定比简单地请求所有位置为空的项目效率低。(当然,问题变成了如何为空字段编写谓词,我对 Core-Data 还不够满意,还没有对此发表评论)。

换句话说,您的问题似乎归结为哪个更快:从数据库中复制所有数据,然后检查您想要的项目,或者只是复制出您想要的项目。我知道我会相信哪一个。

于 2012-04-28T03:07:10.997 回答