2

私はこのように見えるいくつかのコードを持っています:

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

NSArray *arrRequests = [NSJSONSerialization JSONObjectWithData:data
                                                       options:NSJSONReadingMutableContainers
                                                         error:nil];

// Loop through the array and generate the necessary annotation views
for (int i = 0; i<= arrRequests.count - 1; i++)
{
    //now let's dig out each and every json object
    NSDictionary *dict = [arrRequests objectAtIndex:i];

    NSString *is_private = [NSString
                            stringWithString:[dict objectForKey:@"is_private"]];
                            ...

is_privateの値が1または0の場合は機能しますが、nullの場合は、次の行の例外でクラッシュします。

NSString *is_private = [NSString stringWithString:[dict objectForKey:@"is_private"]];

それがnullでないかどうかをチェックする方法、またはこれを処理して、NSString * is_private変数にnilを入れることができるようにする方法はありますか?

ありがとう!

4

3 に答える 3

3

あなたはそれを次のように扱うことができるはずです:

id value = [dict valueForKey:@"is_private"];
NSString *is_private = [value isEqual:[NSNull null]] ? nil : value;
于 2012-08-01T16:24:47.903 に答える
1

[dict objectForKey:@"is_private"]渡しているかどうか、nilまたは[NSNull null]渡す前に確認してみませんstringWithString:か?

于 2012-08-01T16:24:19.677 に答える
1

あなたの問題は、あなたがに値をNSJSONSerialization渡しているという事実とは何の関係もありません。なぜ単にその行をにしないのですか?nilstringWithString:NSString *is_private = [dict objectForKey:@"is_private"];

また、なぜNSStringブール値を格納するためにを使用しているのですか?はるかにNSNumber適しています。

于 2012-08-01T16:24:28.307 に答える