我需要在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,
答案 0 :(得分:0)
答案 1 :(得分:0)
如果每个数据都有唯一的密钥,并且您想要使用唯一密钥进行搜索,则可以使用Hash table
。
或者,搜索键是一个数字,您需要range search
,前key > 5 && key < 10
。然后我认为ordered binary tree
会有所帮助。可以在GitHub
中找到二叉树的实现,我支持已经完成它的人。
至于我,我更喜欢使用SQLite
来解决这类问题。向搜索键添加索引将加快搜索性能。我不想将大量数据存储在主存储器中。
答案 2 :(得分:0)
最后,我使用了CoreData。对于大尺寸数据,数组无法顺利运行。