Ищете эльгантный способ проверить, есть ли ключ в словаре - программирование
Подтвердить что ты не робот

Ищете эльгантный способ проверить, есть ли ключ в словаре

Возможный дубликат:
Как проверить, содержит ли NSDictionary или NSMutableDictionary ключ?

Я могу получить массив ключей (строк) из словаря, а затем пропустить его, выполняя строковое сравнение с ключом, который я хочу проверить, и посмотреть, содержит ли этот словарь ключ, который я ищу.

Но есть ли более элегантное желание проверить, существует ли ключ в словаре?

        NSArray * keys = [taglistDict allKeys];
        for (NSString *key in keys) 
        {
           // do string compare etc
        }

-кода

4b9b3361

Ответ 1

An NSDictionary не может содержать значения nil, поэтому вы можете просто использовать [NSDictionary objectForKey:], который вернет nil, если ключ не существует:

BOOL exists = [taglistDict objectForKey:key] != nil;

РЕДАКТИРОВАНИЕ: Как упоминалось в @OMGPOP, это также работает с использованием литералов Objective-C, используя следующий синтаксис:

NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" };

if (dict[@"key3"])
    NSLog(@"Exists");
else
    NSLog(@"Does not exist");

Печать

Does not exist

Ответ 2

Trojanfoe, скорее всего, лучше, но вы также можете сделать:

[[taglistDict allKeys]containsObject:key]

Ответ 3

Предполагая, что ключ имеет тип NSString, а keys - словарь, тогда вы должны использовать что-то вроде:

if [keys containObject:key] {
 // do something
}