2017-07-17 5 views
0

状況によっては、解析しようとしているJSONオブジェクトに特定のキーが含まれていることがあります。それ以外の場合はそうではありません。IOS/Objective-C:jsonResultsにキー値のペアが含まれているかどうかを検出します。

キーが存在しないかどうかにかかわらず、オブジェクトのキー値のペアにアクセスしようとすると、クラッシュが発生します。したがって、キーが存在するかどうかを事前にテストしようとしています。しかし、NSNullクラスのテストは何らかの理由で動作しません。誰かがキーが存在するかどうかを検出するための正しいテストを提案することはできますか?あなたはNSDictionaryのは、あなたがより多くの助けを見つけるキーが含まれているかどうかを調べている場合、それはNSDictionaryのある終わり

NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 
     NSLog(@"Results of post: %@", jsonResults); 

if ([jsonResults[@"response"][@"insert_id"]isKindOfClass:[NSNull class]]){ 
        NSLog(@"insert id is null");} 
else { 
//EVEN WHEN I KNOW THAT THERE IS no insert_id key, I get to this code suggesting test above not working 
    //Access insert_id value using Key value and so something with it 
NSInteger insertID = [jsonResults[@"response"][@"insert_id"] integerValue]; 
    } 
+0

であることを確認しますか? –

+0

__NSCFString objectForKeyedSubstrict:]:インスタンスに送信された認識できないセレクタ – user6631314

+0

はjsonResultsのように見えます[@ "response"]は文字列ですが辞書はありません! –

答えて

0

は、ここでそれが動作していないという帰例を選別するために私editiedコードです。

objectForKeyは、キーが存在しない場合はnilを返します。 あなたはして試すことができます:

if ([jsonResults objectForKey:@"response"] valueForKey:@"insert_id"] != nil { 
    NSLog(@"insert id is not null"); 
} 

たり、応答がクラッシュが何を言ってん辞書

NSDictionary *response = jsonResults[@"response"]; 
if ([response isKindOfClass:[NSDictionary class]]) { 
    if (jsonResults[@"response"][@"insert_id"] != nil { 
    NSLog(@"insert id is not null"); 
    } 
} 
関連する問題