在NSDictionary的一个大的NSMutableArray中搜索

时间:2015-11-09 09:39:50

标签: ios sqlite search nsmutablearray

我需要在NSDictionary的一个大的NSMutableArray中搜索大约50.000条记录。我试着用:

for (NSDictionary *aProduct in self.arrProduct) {
    if ([[aProduct objectForKey:@"Name"]rangeOfString:@"search string" options:NSCaseInsensitiveSearch].location != NSNotFound) {
        //got it
    }
}

但是有50.000个对象,这个函数的性能非常糟糕。 我不想使用Sqlite进行搜索。 有什么想法吗?

TKS,

3 个答案:

答案 0 :(得分:0)

您可以尝试使用enumerateObjectsUsingBlock:而不是快速枚举。

请查看this了解详情。

另外:enumurateObjectsUsingBlock Vs for loops

答案 1 :(得分:0)

如果每个数据都有唯一的密钥,并且您想要使用唯一密钥进行搜索,则可以使用Hash table

或者,搜索键是一个数字,您需要range search,前key > 5 && key < 10。然后我认为ordered binary tree会有所帮助。可以在GitHub中找到二叉树的实现,我支持已经完成它的人。

至于我,我更喜欢使用SQLite来解决这类问题。向搜索键添加索引将加快搜索性能。我不想将大量数据存储在主存储器中。

答案 2 :(得分:0)

最后,我使用了CoreData。对于大尺寸数据,数组无法顺利运行。