首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS JSON 解析崩潰「__NSArrayM objectForKey:」:數組與字典類型混淆

     編輯:程式設計綜合問答

錯誤堆疊

-[__NSArrayM objectForKey:]: unrecognized selector sent to instance ...
Terminating app due to uncaught exception 'NSInvalidArgumentException'...

原因分析

JSON 結構中 result 對應的是一個**數組**([ ... ]),而非字典。代碼中直接將其轉為 NSDictionary *book 並嘗試 objectForKey:@"title",導致崩潰。

正確解析邏輯

NSDictionary *jsonResults = (NSDictionary *)[json objectWithString:output error:&jsonError];
NSArray *resultArray = [jsonResults objectForKey:@"result"]; // 這是一個數組
if (resultArray.count > 0) {
    NSDictionary *firstBook = [resultArray firstObject]; // 取第一個元素
    NSString *title = [firstBook objectForKey:@"title"]; // 現在可以正常取值
    NSLog(@"Title: %@", title); // 輸出: Yeah
}

關鍵點總結

  • JSON 對象 {} → NSDictionary
  • JSON 數組 [] → NSArray
  • 巢狀結構需層層對應,切勿假設類型。

調試建議

使用 NSLog(@"%@", jsonResults); 打印完整結構,或在 Xcode 中設置斷點查看實際類型。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved