В NSDictionary существует ключ проверки.
как я могу проверить, существует ли это?:
[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]
Я хочу знать, существует ли этот ключ или нет. Как я могу это сделать?
Большое спасибо:)
EDIT:
dataArray имеет в нем объекты. И эти объекты являются NSDictionaries.
Ответы
Ответ 1
Я предполагаю, что [dataArray objectAtIndex:indexPathSet.row]
возвращает NSDictionary
, и в этом случае вы можете просто проверить результат valueForKey
nil.
Например:
if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// The key existed...
}
else {
// No joy...
}
Ответ 2
Итак, я знаю, что вы уже выбрали ответ, но я нашел, что это довольно полезно как категория на NSDictionary
. Вы начинаете получать эффективность в этот момент со всеми этими различными ответами. Мех... 6 из 1...
- (BOOL)containsKey: (NSString *)key {
BOOL retVal = 0;
NSArray *allKeys = [self allKeys];
retVal = [allKeys containsObject:key];
return retVal;
}
Ответ 3
Проверьте, не ноль:
if ([[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// SetEntries exists in this dict
} else {
// No SetEntries in this dict
}
Ответ 4
это также работает с использованием литералов Objective-C, используя следующий синтаксис:
NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" };
if (dict[@"key2"])
NSLog(@"Exists");
else
NSLog(@"Does not exist");
Ответ 5
if ((NSNull *)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
// SetEntries exists in this dict
} else {
// No SetEntries in this dict
}
Правильный ответ.
Ответ 6
Попробуйте следующее:
if ([dict objectForKey:@"bla"]) {
// use obj
} else {
// Do something else like create the object
}
Ответ 7
Это делает то же самое, но с меньшим количеством кода:
if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */ }
else { /* the key doesn't exist */ }
Ответ 8
Проверить словарь содержит любое значение. Я предпочитаю [dic allKeys].count > 0, чтобы проверить.
Ответ 9
Используйте параметр (unsigned long)
:
if ( (unsigned long)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] ) {
// Key exist;
}else{
// Key not exist;
};