這是一個有點混亂,因爲你說:
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'。閱讀錯誤信息並查看實際情況。 –