2015-07-20 105 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是在这种情况下使用的好方法。 –

相关问题