У меня проблема с NSDictionary
, возвращающая null
для NSString
, хотя строка находится в словаре. Вот код:Что может вызвать objectForKey: вернуть значение null с допустимой строкой?
- (void)sourceDidChange:(NSNotification *)aNote {
NSDictionary *aDict = [aNote userInfo];
DLog(@"%@", aDict);
NSString *newSourceString = [aDict objectForKey:@"newSource"];
DLog(@"%@", newSourceString);
newSourceString = [newSourceString stringByReplacingOccurrencesOfString:@" " withString:@""];
DLog(@"%@", newSourceString);
NSString *inspectorString = [newSourceString stringByAppendingString:@"InspectorController"];
DLog(@"%@", inspectorString);
newSourceString = [newSourceString stringByAppendingString:@"ViewController"];
DLog(@"%@", newSourceString);
}
И я получаю следующие утверждения журнала:
2010-04-17 23:50:13.913 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] { newSource = "Second View"; }
2010-04-17 23:50:13.914 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] (null)
2010-04-17 23:50:13.916 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] (null)
2010-04-17 23:50:13.917 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] (null)
2010-04-17 23:50:13.917 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] (null)
Как вы можете видеть, строка в словаре под ключ newSource
, но когда я называю objectForKey:
, я получите null
. Я даже попробовал резервный вариант очистки проекта.
Неужели кто-нибудь когда-либо сталкивался с этим, или я просто забыл что-то действительно основное?
Из любопытства после установки и регистрации 'aDict', что произойдет, если вы выполните DLog (@"% @ ", [aDict allKeys]);'? – Isaac
Это * актуальный * код? Любой шанс, что вы неправильно набрали ключ? Что означает 'DLog (@"% @ ", [aDict allKeys])' give? –
Возможно, вы также захотите попробовать logging 'newSourceString' с'% p' вместо '% @'. –