Ключ проверки существует в NSDictionary
Как я могу проверить, если это существует?:
[[dataArray objectAtIndex:indexPathSet.row] valueForKey:@"SetEntries"]
Я хочу знать, является ли этот ключ или нет. Как я могу это сделать?
большое спасибо :)
изменить: dataArray имеет объекты в нем. И эти объекты NSDictionaries.
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 }