2012-07-20 3 views
0

Я получил уведомление, чтобы я справиться с этим, как такБорясь, чтобы получить словарь прошел с NSNotification

-(void) dateSelected:(NSNotification *) notification 
{ 
NSLog(@"Value: %@", [[notification userInfo] valueForKey:@"date"]); 
NSMutableDictionary * dateDict = [[NSDictionary alloc] initWithDictionary:[notification userInfo]]; 
NSLog(@"The Date Dict: %@", dateDict); 
} 

Бревна я получаю

2012-07-20 11:32: TestApp[10701:40b] Value: (null) 
2012-07-20 11:32: TestApp[10428:40b] The Date Dict: { 
} 

Если я NSLog из самого уведомления он выглядит действительным :

2012-07-20 11:33: TestApp[10457:40b] Notification: NSConcreteNotification 0x16629460 {name = date_selected_; object = { 
date = 20120705; 
}} 

Я сделал это раньше и сработал.

Я уверен, что это просто, но сегодня я не вижу проблемы.

Любая помощь будет оценена по достоинству.

Спасибо, -кода

+0

Вы уверены, что дата-объект не равен нулю и что он правильно передан в словарь userInfo. возможно, вы можете опубликовать код, в котором вы создаете и добавляете объект данных. – MrBr

ответ

2

Это довольно просто, посмотрите на своем выходе журнала ... Там нет USERINFO набора в уведомлении. Есть только имя и объект. Сравните свой вывод с этим ...

NSNotification *notification = [NSNotification notificationWithName:@"NAME" 
    object:self 
    userInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"obj", @"key", nil]]; 
NSLog(@"NOT: %@", notification); 

...

NOT: NSConcreteNotification 0x73586f0 {name = NAME; 
object = <CMAppDelegate: 0x884a4e0>; userInfo = { 
    key = obj; 
}} 

... увидеть разницу? Там имя, объект, но и userInfo в выводе журнала.

Так что ответ - ваше уведомление не содержит userInfo словарь. Посмотрите на код, который вызывает это уведомление.

Смежные вопросы