根据子NSMutableDictionary的键值从NSMutableArray中检索对象

时间:2012-04-03 09:59:39

标签: objective-c ios xcode search nsmutablearray

所以我的应用程序中有NSMutableArray这样填充的内容如下:

NSMutableArray
--Object 1 (NSMutableDictonary)
  --Value (i) for key (key)
  --Value (i) for key (key)
--Object 2 (NSMutableDictonary)
  --Value (i) for key (key)
  --Value (i) for key (key)

我需要能够从主NSMutableArray中选择一个对象,方法是查找与NSMutableDictonary个键之一的值匹配的键...

我知道我可以像这样运行一个循环来实现这个目标:

for (NSMutableDictionary *object in arrayObject) {
    if ([[object objectForKey:@"keyToSearch"] integerValue] == keyToCompare) {
        return [object objectForKey:@"keyToReturn"];
    }
}

然而我担心的是,如果这个数组增长(它可以做什么),那么这需要时间来对它进行搜索..

所以我想知道有没有其他方法可以检索相同的结果但效率更高?

由于

利安

2 个答案:

答案 0 :(得分:1)

搜索显然需要在数组中的字典数量中采用线性时间。你不会通过使用不同的搜索方式解决这个问题。你可以重写你的搜索以使用NSPredicate,它会稍微缩短一点但不会更快。

如果您想更快地进行搜索,则必须修改数据结构。或者,您可以创建NSDictionary作为查找表,其中NSDictionary的键值为keyToSearch,值为数组中的NSMutableDictionaries

尽管如此,除非你的阵列确实真的很大,否则搜索时间可以忽略不计,你不应该担心它。

答案 1 :(得分:0)

最终,任何数组的枚举都会花费时间,随着数组大小的增长而增长。如果你有任何方法提示它的位置,它可能会使它更快,但除此之外,快速枚举可能是以你想要的方式运行数据的最快方式。

除非您经历数百个对象,否则所花费的时间应该可以忽略不计。