从 NSDictionary 按名称获取密钥
Posted
技术标签:
【中文标题】从 NSDictionary 按名称获取密钥【英文标题】:get key by name from NSDictionary 【发布时间】:2011-02-13 11:25:42 【问题描述】:我有一个嵌套的 NSDictionary NSDictionary。
我在 NSArray *array 中获取字典,并使用 for (NSDictionary *frame in array)
遍历它们。
我想要的是框架的名称。比如[frame getName],这个有什么功能吗?
【问题讨论】:
【参考方案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" 键的所有值。
【讨论】:
以上是关于从 NSDictionary 按名称获取密钥的主要内容,如果未能解决你的问题,请参考以下文章