NSMutabledictionary是nil NSJSONSerialization

时间:2014-04-10 09:49:59

标签: ios objective-c nsjsonserialization

我有这段代码:

NSMutableDictionary *responseObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error: &error];

当互联网连接时(我正在使用飞行模式)。

我收到一条错误消息,说responseObject是nil。

我把这段代码放在后面:

if (responseObject == nil){
    dispatch_async(dispatch_get_main_queue(), ^{
        [self ProvidePopUpForNetworkLoss];
    });
}

我收到错误:

* *因未捕获的异常终止此应用' NSInvalidArgumentException'原因'数据参数为nil' 有人可以帮忙吗?

4 个答案:

答案 0 :(得分:1)

试试这个。也许这会对你有所帮助。并检查从数据中获取的对象是否为字典。

if(!data)
{
    dispatch_async(dispatch_get_main_queue(), ^{
        [self ProvidePopUpForNetworkLoss];
    });
}

答案 1 :(得分:0)

||尝试此修改:

if (responseObject == [NSNull null] || responseObject == NULL){
dispatch_async(dispatch_get_main_queue(), ^{
    [self ProvidePopUpForNetworkLoss];
});
}

答案 2 :(得分:0)

如果没有互联网连接,那么响应数据将为零,尝试在日志中打印响应字符串或错误,以便您可以有清晰的想法

NSString *htmlSTR = [[NSString alloc] initWithData:responseData
                                                  encoding:NSUTF8StringEncoding];

 NSLog(@"htmlSTR=%@",htmlSTR);

NSLog(@"Error=%@",[error localizedDescription]);

答案 3 :(得分:0)

当您没有互联网连接时(或出于许多其他原因)"数据" (无论你从哪里获得)都将是零。 JSONObjectWithData正确地说使用nil数据调用此方法是一个编程错误并抛出此异常。解决方案:如果数据不是,则不要调用JSONObjectWithData。无论如何,这个错误应该与JSONObjectWithData返回nil的处理方式截然不同。如果JSONObjectWithData返回nil,则表示您收到的数据有问题。

要查找问题所在,请在Xcode中创建一个异常断点。它会在抛出异常时停止,这会显示哪个方法抛出了异常 - 它在你的nil检查之前。