2015-07-20 147 views
2

我想從一個JSON響應了號碼,但我不斷收到錯誤:JSON的NSNumber無法識別的選擇發送到實例

objectForKeyedSubscript:]: unrecognized selector sent to instance 0xa00000065646f434 

這裏是我的代碼:

NSNumber *FaultCode; 
     NSArray *detailsFault = json[@"GetResponse"][@"GetResult"][@"Faults"][@"FaultException"]; 

     for (NSDictionary *fault in detailsFault){ 
      NSLog(@"%@", fault[@"Code"]); 
      FaultCode = fault[@"Code"]; 
     } 

它工作正常的字符串,但其他數據,但嘗試使用這只是一個數字時失敗。

這裏是JSON:

{ "GetResponse":{ "GetResult":{ "Faults":{ "FaultException":{ "Code":1234, "Message":"It has failed" } }, "Response":null } } } 
+1

我不文辭循環請參閱該JSON中的任何數組。此外,您發佈的錯誤消息不完整。 – trojanfoe

回答

1

下面是解

NSString *str = @"{ \"GetResponse\":{ \"GetResult\":{ \"Faults\":{ \"FaultException\":{ \"Code\":1234, \"Message\":\"It has failed\" } }, \"Response\":null } } }"; 


    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; 
    id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 


    NSNumber *FaultCode; 
    NSDictionary *detailsFault = json[@"GetResponse"][@"GetResult"][@"Faults"][@"FaultException"]; 

    NSLog(@"%@", detailsFault[@"Code"]); 
    FaultCode = detailsFault[@"Code"]; 

不需要你已經有當你 「的FaultException」

+0

非常好,謝謝,我已經從其他所有部分刪除了循環。我錯過了在這一點上使用NSDictionary。感謝您的幫助 – realtek

+1

BTW:在鍵控路徑上使用KVC比鍵控式下標更容易:'[json valueForKeyPath:@「GetResponse.GetResult.Faults.FaultException」]'。 –

+0

是的KVC是在這種情況下使用的好方法。 –

相關問題