Мне недавно сказали, что кастинг [NSNull null]
до (NSString*)
был «ужасным».NSDictionary stringForKey: и литье [NSNull null] в NSString *
Однако метод -[NSDictionary stringForKey:]
вернет [NSNull null]
, если ключ не находится в словаре, и если я не выполняю бросок, компилятор кричит на меня.
Я что-то не хватает?
EDIT:
Моя ошибка ... и я думаю, что я мог бы начинаю видеть проблему ...
Как все уже отмечалось, нет stringForKey: метод на NSDictionary, да Я думал о том, по умолчанию пользователя, когда я задал вопрос ... так что я вернулся и посмотрел на то, что я делаю ... вот это:
NSString * someValue = (NSString*)[myDictionary objectForKey:@"key"];
if (someValue == (NSString*)[NSNull null]) ...
, если я не делаю бросок в в этом случае я получаю следующую ошибку:
warning: comparison of distinct Objective-C types 'struct NSNull *' and 'struct NSString *' lacks a cast
Кастинг значение «решает» проблему, и я предпочел бы не написать 10 строк, в которых один будет делать ...
это плохо? Где я столкнулся с проблемами?
ТАКЖЕ:
Словари приходят из библиотеки JSON ... и Нуль- действительные значения в этом случае, поэтому, возможно, это не то, что NSDictionary возвращает их, если ключ отсутствует, а то, что ключ , на самом деле, там, и значение на самом деле является нулевым.
Я просто проверил документы, и 'NSDictionary' не появляются * имеют * метод 'stringForKey:'. Я что-то упускаю? –