1

このチュートリアルに従ってください: http://www.raywenderlich.com/5492/working-with-json-in-ios-5、私はそのような単純なアプリを作成します:

#define kLatestKivaLoansURL [NSURL URLWithString: @"http://api.kivaws.org/v1/loans/search.json?status=fundraising"] 

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        NSData* data = [NSData dataWithContentsOfURL: kLatestKivaLoansURL];
        NSError* error;
        NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data 
                                                             options:kNilOptions
                                                               error:&error];
        NSArray* latestLoans = [json objectForKey:@"loans"];
        NSLog(@"Error: %@",error);
        NSLog(@"loans: %@",latestLoans); 

        dispatch_async(dispatch_get_main_queue(), ^(){
            self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
            self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
            self.window.rootViewController = self.viewController;
            [self.window makeKeyAndVisible];
        });

    });

    return YES;
}

@end

Network not OK または JSON link Error の場合、同じ中断が発生します: " *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'data parameter is nil"

このエラーをキャッチする方法は? 中断ではなく、警告メッセージを表示したいだけです。

JSONデータを解析するときのエラーの種類は何ですか?

4

1 に答える 1

5

NSData* dataゼロかどうかのチェックを実装する必要がありますか?nilの場合は、コード行を実行しないでください

NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data 
                                                             options:kNilOptions
                                                               error:&error];

nilデータをに変換しようとしているためDictionary

コードに到達可能性クラスを実装することで、ネットワークの可用性を確認することもできます。サンプルアプリケーションは、SystemConfigurationフレームワークを使用してiPhoneまたはiPodtouchのネットワーク状態を監視する方法を示しています

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

于 2013-01-29T04:03:26.213 に答える