-1

我正在为新闻做一个 iPhone 应用程序。我正在通过获取新闻数据ASIHTTPRequest并使用JSONKit. 连接到 Internet 时工作正常,但是如果 WiFi 连接关闭,我会收到以下异常并且应用程序崩溃:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“jsonData 参数为 NULL。”

这是我的代码:

- (id)objectWithData: (NSData *)jsonData error: (NSError **)error
{
    if(jsonData == NULL)
    {
        [NSException raise:NSInvalidArgumentException format:@"The jsonData argument is NULL."];
    }

    return([self objectWithUTF8String:(const unsigned char *)[jsonData bytes] length:[jsonData length] error:error]);
}

谁能帮我吗?

4

2 回答 2

0

http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

在您的 appDelegate 中包含示例代码中的文件/代码后,在您要检查互联网的类中创建一个 appDelegate 实例并使用以下内容:

- (id)objectWithData:(NSData *)jsonData error:(NSError **)error
{
    YourAppDelegate *appDelegate = (YourAppDelegate * )[[UIApplication SharedApplication]delegate];

    if (![appDelegate checkNetworkConnectionAndWarnUser:YES])
    {
        NSLog(@"No internet");
    }
    else
    {
        return([self objectWithUTF8String:(const unsigned char *)[jsonData bytes] length:[jsonData length] error:error]);
    }
}
于 2012-09-11T09:26:19.497 回答
-3

使用 cmnd+shift+F 查找您使用非法参数的位置,如果请求失败,您通常不应到达该位置。

无论请求结果如何,您似乎都在尝试处理请求结果,但无论如何您都需要对接收到的数据进行 nil/NULL 检查。你抛出的异常必须被捕获和处理@try - @catch

于 2012-09-11T07:48:25.273 回答