这是一个有点混乱,因为你说:
I have an NSArray that looks like the following
[{
"Id":"456",
"Type":"Dog",
"Sound":"Bark",
},
{
"Id":"789",
"Type":"Cat",
"Sound":"Meow",
}]
但后来,你也说:
的NSLog(@ “%@”,[阵列firstObject] ); //不起作用
当然,你不指出什么“不工作”的意思是......它会抛出一个错误吗?它什么都不输出?它输出的是什么,但不是你所期望的?
但是,如果您没有有一个数组,“看起来像”,那么让我们来看看它实际上是什么...
我们可以把字典为:
{ key1:value1, key2:value2, key3:value3, etc... }
我们可以想像,一个数组为:
[object1, object2, object3, etc...]
因此,假设您的示例数据被结构化就像有效的NSArray
那样,这意味着你有一个2个字典对象的数组。如果你想将它们输出到控制台,你可以这样做:
// log the first object in the array
NSLog(@"%@", [array firstObject]);
和输出应该是一个字典:
{
Id = 456;
Sound = Bark;
Type = Dog;
}
你也可以这样做:
// for each element (each Dictionary) in array, output the dictionary
for (NSDictionary *d in array) {
NSLog(@"%@", d);
}
产生于:
...[1234:4321] {
Id = 456;
Sound = Bark;
Type = Dog;
}
...[1234:4321] {
Id = 789;
Sound = Meow;
Type = Cat;
}
,最后:
// for each element (each Dictionary) in array
for (NSDictionary *d in array) {
// for each Key in each Dictionary
for (NSString *key in [d allKeys]) {
NSLog(@"%@ - %@", key, d[key]);
}
}
,这将给你:
...[1234:4321] Sound - Bark
...[1234:4321] Id - 456
...[1234:4321] Type - Dog
...[1234:4321] Sound - Meow
...[1234:4321] Id - 789
...[1234:4321] Type - Cat
注意词典是*未排序的,所以不要指望每次按照相同的顺序逐个按键。
希望是有道理的。当然,如果你不这样做,你仍然需要找出为什么你认为你有一个NSArray。
看起来你的数组变量不是NSArray的子类。添加breakepoint并检查它。 – antonsergeev88
是的,你的代码看起来很好。阵列如何设置?你怎么知道内容是什么?发布该代码,你会更有可能得到一个有用的答案。 –
如果'[array firstObject]'给你一个'NSInvalidArgumentException',那么'array'不是'NSArray'。阅读错误信息并查看实际情况。 –