根据NSArray / NSDictionary层次结构中的其他对象检索对象

时间:2010-10-18 11:52:35

标签: iphone nsarray nsdictionary

对于奇怪的标题感到抱歉......所有内容都将被解释。

基本上我在我的应用程序中有这样的数组/字典结构:

NSArray {

    NSDictionary {
        (NSString *)id;
        (NSDictionary *)dictionary;
    }

    NSDictionary {
        (NSString *)id;
        (NSDictionary *)dictionary;
    }

    NSDictionary {
        (NSString *)id;
        (NSDictionary *)dictionary;
    }

    etc...

}

希望这很容易解决......

现在我有一个(NSString *)id,我希望得到与之对应的(NSDictionary *)dictionary

我有什么方法可以做到这一点吗?

谢谢

汤姆

2 个答案:

答案 0 :(得分:2)

尝试这样的事情

for (NSDictionary *dict in dictArray) {
    if ([[dict objectForKey:@"id"] isEqualToString:targetID]){
        return [dict objectForKey:@"dictionary"];
    }
}

我没有编译代码(我附近没有mac),但我认为你有了这个想法。基本思想是遍历数组并比较查询字符串。但是如果你有很多项目,那么这种线性搜索可能会非常耗时。

答案 1 :(得分:2)

如果ids是唯一的,我会使用NSDictionary作为我的顶级对象而不是NSArray。这样你就可以做到:[dict objectForKey:stringID]

除非您将它用作表数据源,否则

NSArray在这里没有意义。