【发布时间】:2011-02-13 11:25:42
【问题描述】:
我有一个嵌套的 NSDictionary NSDictionary。
我在 NSArray *array 中获取字典,并使用 for (NSDictionary *frame in array) 遍历它们。
我想要的是框架的名称。比如[frame getName],这个有什么功能吗?
【问题讨论】:
我有一个嵌套的 NSDictionary NSDictionary。
我在 NSArray *array 中获取字典,并使用 for (NSDictionary *frame in array) 遍历它们。
我想要的是框架的名称。比如[frame getName],这个有什么功能吗?
【问题讨论】:
如果你的数组是这样的
<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
}
【讨论】:
不完全理解你的问题,你的意思是通过Key从字典中获取对象
[dict objectForKey:@"key"] 应该知道了。
如果你的意思是有另一个array 存储所有子字典对象,你需要知道根字典中指定子字典的键值:
[[rootDict allKeysForObject:theSpecifySubDictionary] lastObject]
【讨论】:
NSArray *myTemp2Array = [myArray valueForKey:@"Name"];
这将遍历一个数组(包含字典)并在一个漂亮的小数组中返回 @"Name" 键的所有值。
【讨论】: