В 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;
};