NSDictionary - необходимо проверить, содержит ли словарь пару ключ-значение или нет - PullRequest
91 голосов
/ 03 февраля 2010

Мне просто нужно спросить что-то, как следует.Предположим, у меня есть словарь.

NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
[xyz setValue:@"sagar" forKey:@"s"];
[xyz setValue:@"amit" forKey:@"a"];
[xyz setValue:@"nirav" forKey:@"n"];
[xyz setValue:@"abhishek" forKey:@"a"];
[xyz setValue:@"xrox" forKey:@"x"];

Теперь мне нужно проверить следующее:

[xyz содержит значение ключа "b" ??пара или нет?

Вопрос в том, как?

Другой вопрос: как просто подсчитать общую пару ключ-значение?

Скажите, например, NSInteger mCount=[xyz keyCounts];

Ответы [ 2 ]

183 голосов
/ 03 февраля 2010

Просто спросите это за objectForKey:@"b".Если он возвращает nil, для этой клавиши не устанавливается объект.

if ([xyz objectForKey:@"b"]) {
    NSLog(@"There's an object set for key @\"b\"!");
} else {
    NSLog(@"No object set for key @\"b\"");
}

Редактировать : Что касается вашего отредактированного второго вопроса, это просто NSUInteger mCount = [xyz count];.Оба эти ответа хорошо документированы и легко доступны в справочнике классов NSDictionary ( [1] [2] ).

1 голос
/ 24 февраля 2017

С буквальным синтаксисом вы можете проверить следующим образом

static const NSString* kKeyToCheck = @"yourKey"
if (xyz[kKeyToCheck])
  NSLog(@"Key: %@, has Value: %@", kKeyToCheck, xyz[kKeyToCheck]);
else
 NSLog(@"Key pair do not exits for key: %@", kKeyToCheck); 
...