0

解析'中のコードのタイトルに が表示されると、アプリケーションがクラッシュします。JSON

この行は、タイトルの次のものをロードしています:

[[cell textLabel] setText:[item objectForKey:@"title"]];

JSON:

 NSString *jsonString = [NSString 
                            stringWithContentsOfURL:[NSURL URLWithString:@"**test.php"] 
                            encoding:NSStringEncodingConversionAllowLossy
                            error:nil];
    // Create parser
    SBJSON *parser = [[SBJSON alloc] init];
    NSDictionary *results = [parser objectWithString:jsonString error:nil];
    parser = nil;
    // Set tableData
    [self setTableData:[results objectForKey:@"items"]];

クラッシュ:

tableData   NSArray *   0x00000001

2012-04-10 10:29:11.446 * [21222:f803] -[NSNull isEqualToString:]: インスタンス 0x146ace8 に送信された認識されないセレクター 2012-04-10 10:29:11.447 * [21222:f803] * uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x146ace8' * First throw call stack: (0x13d4022 0x1565cd6 0x13d5cbd 0x133aed0 0x133acb2 0x15e0ff 0x2b10 0xb8c54 0xb93ce 0xa4cbd 0xb36f1 0x5cd21 0x13d5e42 0x1d8c679 0x1d96579 0x1d1b4f7 0x1d1d3f6 0x1db81ce 0x1db8003 0x13a8936 0x13a83d7 0x130b790 0x130ad84 0x130ac9b 0x12bd7d8 0x12bd88a 0x1e626 0x1ded 0x1d55) 例外をスローして呼び出された終了 (lldb)

4

1 に答える 1

2

そのクラッシュ情報の重要な部分は次のとおりです。unrecognized selector sent to instance ... [NSNull isEqualToString:]

JSON にはnull、文字列が必要な場所が含まれているようです。後で、おそらくsetTableData:あなたの中で次のようなことをするでしょう:

NSString* whatever = [items objectForKey:@"whatever"];
if([whatever isEqualToString:@"hello"]){
    ...
}

whatever変数には が含まれているため、期待していNSNullたものではなく、クラッシュします。NSString

于 2012-04-10T08:42:20.793 に答える