0

我刚刚获取数据,但是当我尝试从 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:]: unrecognized selector sent to instance 0x9485a00”

这是我的 jSOn 输出, NSLog(@"User Details : %@",results);

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 = "";
    }
)
4

3 回答 3

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);
于 2013-05-29T08:07:27.383 回答
1

首先,您需要将序列化数据保存到数组中。然后您必须相应地使用它..在这种情况下

NSArray *allDAtaDictionary = [NSJSONSerialization JSONObjectWithData:_webData options:0 error:nil];

将数组记录在索引 0 中,看看你得到了什么。在此之后,您可以开始解析数据。

因此发生异常。在此处查看我的答案以解析 JSON如何在对象 C 中使用多个实例解析 JSON

于 2013-05-29T08:09:46.893 回答
0

您的响应中可能有一个数组,结果Dictionary 正在保存,因此您需要使用 ObjectAtIndex 而不是调用 objectForKey

于 2013-05-29T08:07:27.333 回答