NSDictionary не может содержать ноль. Если ключ существует, он должен содержать объект. Метод objectForKey:
вернет nil
, если для определенного ключа не определен объект. Однако вы можете сохранить [NSNull null]
в качестве пустого заполнителя в словаре или массиве. Так что вы можете проверить это, все зависит от того, как заполнен ваш словарь.
[School objectForKey:WEBSITE_KEY] == nil || [School objectForKey:WEBSITE_KEY] == [NSNull null]
Также убедитесь, что вы не путаете @ "" с нулем или без значения. Если это не ноль и не [NSNull null], то лучше зарегистрировать его и, возможно, посмотреть, какой объект хранится:
NSLog(@"Description: %@", [School objectForKey:WEBSITE_KEY]);
NSLog(@"Class: %@", [[School objectForKey:WEBSITE_KEY] class]);
Если класс возвращает NSString или NSCFString, значит, он содержит пустую строку. Который вы можете проверить. Вот полное заявление:
id schoolWebsite = School objectForKey:WEBSITE_KEY];
if (schoolWebsite && schoolWebsite != [NSNull null] && [schoolWebsite isKindOfClass:[NSString class]] && [schoolWebsite length] > 0)) {
// There is definitely a non-empty string for that key!
} else {
// Not valid
}
Это будет хорошо для использования, поскольку вы можете быть не уверены, что именно хранится в словаре, так как другие будут его заполнять. Вы никогда не можете быть слишком осторожны!