-1

ニュース用のiPhoneアプリをやっています。でニュース データを取得しASIHTTPRequest、解析していJSONKitます。インターネットに接続しているときは正常に動作していますが、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 に答える