我有这段代码:
NSMutableDictionary *responseObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error: &error];
当互联网连接时(我正在使用飞行模式)。
我收到一条错误消息,说responseObject是nil。
我把这段代码放在后面:
if (responseObject == nil){
dispatch_async(dispatch_get_main_queue(), ^{
[self ProvidePopUpForNetworkLoss];
});
}
我收到错误:
* *因未捕获的异常终止此应用' NSInvalidArgumentException'原因'数据参数为nil' 有人可以帮忙吗?
答案 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检查之前。