Ищете эльгантный способ проверить, есть ли ключ в словаре
Возможный дубликат:
Как проверить, содержит ли NSDictionary или NSMutableDictionary ключ?
Я могу получить массив ключей (строк) из словаря, а затем пропустить его, выполняя строковое сравнение с ключом, который я хочу проверить, и посмотреть, содержит ли этот словарь ключ, который я ищу.
Но есть ли более элегантное желание проверить, существует ли ключ в словаре?
NSArray * keys = [taglistDict allKeys];
for (NSString *key in keys)
{
// do string compare etc
}
-кода
Ответы
Ответ 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
}