NSDictionary - нужно проверить, содержит ли словарь пара ключ-значение или нет

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

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 does содержит значение ключа "b"? пара или нет?

Вопрос: как?

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

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

Ответ 1

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

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

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

Ответ 2

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

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);