web-dev-qa-db-ja.com

チェックキーがNSDictionaryに存在する

これが存在するかどうかを確認するにはどうすればよいですか?:

[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]

このキーが存在するかどうかを知りたいです。どうやってやるの?

どうもありがとうございました :)

編集:dataArrayにはオブジェクトがあります。これらのオブジェクトはNSDictionariesです。

73
cocos2dbeginner

[dataArray objectAtIndex:indexPathSet.row]NSDictionary を返していると仮定します。この場合、nil.に対してvalueForKeyの結果を簡単に確認できます。

例えば:

if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
    // The key existed...

}
else {
    // No joy...

}
155
John Parker

すでに回答を選択していることは知っていますが、これはNSDictionaryのカテゴリとしてかなり役立つことがわかりました。この時点で、これらすべてのさまざまな答えから効率を開始します。 Meh ... 6 of 1 ...

- (BOOL)containsKey: (NSString *)key {
     BOOL retVal = 0;
     NSArray *allKeys = [self allKeys];
     retVal = [allKeys containsObject:key];
     return retVal;
}
46
Miles Alden

Nilかどうかを確認します。

if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
    // SetEntries exists in this dict
} else {
    // No SetEntries in this dict
}
34
BoltClock

これは、次の構文を使用するObjective-Cリテラルを使用しても機能します。

NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" };
if (dict[@"key2"])
NSLog(@"Exists");
else
NSLog(@"Does not exist");
8
Yogesh Kumar

これを試して:

if ([dict objectForKey:@"bla"]) {
   // use obj
} else {
   // Do something else like create the object
}
0
Tea

チェック辞書に値が含まれています。チェックするには[dic allKeys] .count> 0を使用します。

0
zedzhao

これは同じことをしますが、コードは少なくなります:

if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */        } 
else                                                   { /* the key doesn't exist */ }
0
Jesus
if ((NSNull *)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
    // SetEntries exists in this dict
} else {
    // No SetEntries in this dict
}

それが正しい答えです。

0
WalterDa

使用 (unsigned long)オプション:

if ( (unsigned long)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] ) {
    // Key exist;
}else{
    // Key not exist;
};
0
TheAlphaGhost