我正在尝试从NSDictionary获取所需的数据。 NSDictionary看起来像:
{
result = {
id = (
{
text = 1;
},
{
text = 2;
}
);
name = (
{
text = "name 1";
},
{
text = "name 2";
}
);
}
问题是 - 可以是“name”或“id”的单个元素,当它是单个元素时,会发生错误。我正在尝试很多解决方案来修复它,其中一个:
NSDictionary * dict0=[_xmlDictionary objectForKey:@"result"];
ID =[[NSMutableArray alloc] init];
[ID addObject:[[dict0 valueForKey:@"id"] valueForKey:@"text"]];
name =[[NSMutableArray alloc] init];
[name addObject:[[dict0 valueForKey:@"name"] valueForKey:@"text"]];
当我打印ID和名称数组时,我看到了:
代表ID:
(
(1,
2
)
)
代名:
(
(
"name 1",
"name 2"
)
)
但Xcode显示name.count = 1,当我尝试使用id和name实现cellForRowAtIndexPath时,发生错误:
[__NSArrayI length]: unrecognized selector sent to instance 0x10b102830
*** Terminating app due to uncaught exception 'NSInvalidArgumentException'
如何解决这个问题,我的代码在单个元素和更多元素时能正常工作?
答案 0 :(得分:2)
您首先显示的数据结构看起来像是包含字典的外部字典,其中的项目包含的数组又包含更多字典。
从ID获取文本对象的代码如下所示:
//get the dictionary at key "result"
NSDictionary result = _xmlDictionary[@"result"];
//Get the array at key "id" in result dict
NSArray the_id = result[@"id"];
//Get the object at index 0 in the array
NSDictionary objAtIndex0 = the_id[0];
//Get the object at key "text" in the dictionary
NSString *text = objAtIndex0[@"text"];
或者,一起排在一行:
NSString *text = _xmlDictionary[@"result"][@"id"][0][@"text"];