Ключ проверки существует в NSDictionary


Как я могу проверить, если это существует?:

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

Я хочу знать, является ли этот ключ или нет. Как я могу это сделать?

большое спасибо :)

изменить: dataArray имеет объекты в нем. И эти объекты NSDictionaries.

8 71

8 ответов:

Я полагаю, что [dataArray objectAtIndex:indexPathSet.row] возвращает NSDictionary в этом случае вы можете просто проверить результат valueForKey против Нилова.

например:

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

}
else {
    // No joy...

}

Итак, я знаю, что вы уже выбрали ответ, но я нашел это довольно полезным в качестве категории на NSDictionary. Вы начинаете получать эффективность в этот момент со всеми этими различными ответами. Мех...6 на 1...

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

проверьте, если это ноль:

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 ((NSNull *)[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"] != nil) {
    // SetEntries exists in this dict
} else {
    // No SetEntries in this dict
}

Это правильный ответ.

попробуйте это:

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

Это то же самое, но с меньшим количеством кода:

if (dataArray[indexPathSet.row][@"SetEntries"] != nil) { /* the key exists */        } 
else                                                   { /* the key doesn't exist */ }

проверить словарь содержит любое значение. Я предпочитаю [dic allKeys].количество > 0 для проверки.