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 哪种搜索方法最有效?的主要内容,如果未能解决你的问题,请参考以下文章
iOS Core Data:使用 Foundation 对象添加属性
带有 Swift 和 iOS 8+ 的 CoreData 仍然需要 willAccessValueForKey() 吗?