我刚刚获取数据但是当我尝试将其附加到NSData的字符串时,编译器会发生异常错误。 我的代码看起来像这样:
NSDictionary *allDAtaDictionary = [NSJSONSerialization JSONObjectWithData:_webData options:0 error:nil];
NSString *jSonStatus = [allDAtaDictionary objectForKey:@"status"];
if([jSonStatus isEqualToString:@"OK"])
{
NSDictionary *results = [allDAtaDictionary objectForKey:@"user_details"];
NSLog(@"User Details : %@",results);
所有事情都有效,直到这些行开始:
NSString *userID = [results objectForKey:@"userID"];
错误输出为:
* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFArray objectForKey:]: 无法识别的选择器发送到实例0x9485a00'
这是我的jSOn输出,NSLog(@“用户详细信息:%@”,结果);
User Details : (
{
userCity = California;
userCountry = "United States";
userDOB = "1988-03-02";
userDetails = "";
userEmail = "xxx@xxx.com";
userFBID = 715296184;
userFullName = "John Mc Grager";
userGender = Male;
userID = 70;
userLastLoginTime = "2013-05-29 10:51:27";
userLatitude = "37.7858";
userLongtitude = "-122.406";
userNickName = warblader;
userPassword = "";
userStatus = 1;
userToken = "";
}
)
答案 0 :(得分:3)
似乎JSON是一个包含一个字典的数组。你至少在这里向我们展示了什么。
所以
NSArray *results = [allDAtaDictionary objectForKey:@"user_details"];
NSLog(@"User Details : %@",results);
assert(results.count>0);
NSDictionary *user = [results objectAtIndex:0];
NSString *userID = [results objectForKey:@"userID"];
NSLog(@"%@", userID);
答案 1 :(得分:1)
首先,您需要将序列化数据保存到数组中..然后您必须相应地使用它...在这种情况下
NSArray *allDAtaDictionary = [NSJSONSerialization JSONObjectWithData:_webData options:0 error:nil];
在索引0中记录数组,看看你得到了什么。在此之后,您可以开始解析数据。
由于此原因发生了异常。在这里检查我的答案以解析JSON How to parse JSON with multiple instance in Object C
答案 2 :(得分:0)
您的回复可能包含一个数组,其中结果字典正在保留,因此您需要使用ObjectAtIndex而不是调用objectForKey