【问题标题】:get key by name from NSDictionary从 NSDictionary 按名称获取密钥
【发布时间】:2011-02-13 11:25:42
【问题描述】:

我有一个嵌套的 NSDictionary NSDictionary。 我在 NSArray *array 中获取字典,并使用 for (NSDictionary *frame in array) 遍历它们。

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

【问题讨论】:

    标签: objective-c nsdictionary


    【解决方案1】:

    如果你的数组是这样的

    <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
    }
    

    【讨论】:

    • 和第二个例子一模一样,谢谢,没有解释清楚
    【解决方案2】:

    不完全理解你的问题,你的意思是通过Key从字典中获取对象

    [dict objectForKey:@"key"] 应该知道了。

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

    [[rootDict allKeysForObject:theSpecifySubDictionary] lastObject]

    【讨论】:

    • 我认为您的意思是“具体”,而不是“指定”。 “指定”是动词,“具体”是名词。干杯。
    【解决方案3】:
    NSArray *myTemp2Array = [myArray valueForKey:@"Name"];
    

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

    【讨论】:

      猜你喜欢
      • 2018-06-26
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 2014-11-07
      相关资源
      最近更新 更多