これが存在するかどうかを確認するにはどうすればよいですか?:
[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]
このキーが存在するかどうかを知りたいです。どうやってやるの?
どうもありがとうございました :)
編集:dataArrayにはオブジェクトがあります。これらのオブジェクトはNSDictionariesです。
[dataArray objectAtIndex:indexPathSet.row]
は NSDictionary
を返していると仮定します。この場合、nil.
に対してvalueForKey
の結果を簡単に確認できます。
例えば:
if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// The key existed...
}
else {
// No joy...
}
すでに回答を選択していることは知っていますが、これはNSDictionary
のカテゴリとしてかなり役立つことがわかりました。この時点で、これらすべてのさまざまな答えから効率を開始します。 Meh ... 6 of 1 ...
- (BOOL)containsKey: (NSString *)key {
BOOL retVal = 0;
NSArray *allKeys = [self allKeys];
retVal = [allKeys containsObject:key];
return retVal;
}
Nilかどうかを確認します。
if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// SetEntries exists in this dict
} else {
// No SetEntries in this dict
}
これは、次の構文を使用するObjective-Cリテラルを使用しても機能します。
NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" };
if (dict[@"key2"])
NSLog(@"Exists");
else
NSLog(@"Does not exist");
これを試して:
if ([dict objectForKey:@"bla"]) {
// use obj
} else {
// Do something else like create the object
}
チェック辞書に値が含まれています。チェックするには[dic allKeys] .count> 0を使用します。
これは同じことをしますが、コードは少なくなります:
if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */ }
else { /* the key doesn't exist */ }
if ((NSNull *)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// SetEntries exists in this dict
} else {
// No SetEntries in this dict
}
それが正しい答えです。
使用 (unsigned long)
オプション:
if ( (unsigned long)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] ) {
// Key exist;
}else{
// Key not exist;
};