从NSDictionary获取名称密钥

时间:2011-02-13 11:25:42

标签: objective-c nsdictionary

我有一个NSDictionaries的嵌套NSDictionary。 我在NSArray *数组中获取字典,然后用for (NSDictionary *frame in array)

迭代它们

我想要的是框架的名称。例如[frame getName],这有什么功能吗?

3 个答案:

答案 0 :(得分:4)

如果您的阵列看起来像这样

<array>
    <dict>
        <key>name</key>
        <string>My First Frame</string>
        ...
    </dict>
    <dict>
        <key>name</key>
        <string>My Other Frame</string>
        ...
    </dict>
    ...
</array>

然后你会用它来得到这个名字:

for (NSDictionary *frame in array) {
    NSString *frameName = [frame objectForKey:@"name"];
}

但是,如果您的词典实际上不包含您的框架名称,那么您运气不好(在数组中,元素使用索引存储,而不是使用密钥存储)。

现在,您还提到了上面的“NSDictionaries的嵌套NSDictionaries”。如果您有以下结构,其中名称是外部字典中的键:

<dict>
    <key>My First Frame</key>
    <dict>
        <key>width</key>
        <integer>300</integer>
        <key>height</key>
        <integer>200</integer>
        ...
    </dict>
    <key>My Second Frame</key>
    <dict>
        <key>width</key>
        <integer>150</integer>
        <key>height</key>
        <integer>105</integer>
        ...
    </dict>
    ...
</dict>

然后你可以用这个:

for (NSString *frameName in [outerDict allKeys]) {
    NSDictionary *frame = [outerDict objectForKey:frameName];
    // now you have both the key (frameName) and the value (frame) to work with
}

答案 1 :(得分:1)

不完全理解你的问题,你的意思是通过Key

从词典中获取对象

[dict objectForKey:@"key"]应该得到它。

如果你的意思是有另一个array存储所有子字典对象,你需要知道根字典中指定子字典的键值:

[[rootDict allKeysForObject:theSpecifySubDictionary] lastObject]

答案 2 :(得分:0)

NSArray *myTemp2Array = [myArray valueForKey:@"Name"];

这将遍历一个数组(包含字典),并在一个漂亮的小数组中返回 @“Name”键的所有值。