iOS 想知道使用 CoreData ManagedObjects 或 NSMutableArrays 哪种搜索方法最有效?

Posted

技术标签:

【中文标题】iOS 想知道使用 CoreData ManagedObjects 或 NSMutableArrays 哪种搜索方法最有效?【英文标题】:iOS Need to know what search method is most efficient using CoreData ManagedObjects or NSMutableArrays? 【发布时间】:2012-04-28 02:30:42 【问题描述】:

我目前正在为我的应用程序使用搜索功能。该应用程序使用 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 一起使用,我相信最好使用它,因为据说搜索会很有效。但这是我的看法。我只是想知道哪种方法最有效,因为当开始保存大量记录时很可能会使用此功能。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

嗯,很有趣,我想看看这个。谢谢

以上是关于iOS 想知道使用 CoreData ManagedObjects 或 NSMutableArrays 哪种搜索方法最有效?的主要内容,如果未能解决你的问题,请参考以下文章

更新 CoreData iOS

iOS Core Data:使用 Foundation 对象添加属性

iOS:核心数据类方法

iOS:通过键值编码设置 coredata 属性?

带有 Swift 和 iOS 8+ 的 CoreData 仍然需要 willAccessValueForKey() 吗?

CoreData 和 JSON 映射器