努力让字典通过NSNotification传递

时间:2012-07-20 10:53:16

标签: iphone objective-c ios xcode

我收到了通知,所以我就这样处理了

-(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: {
}

如果我NS注销通知本身,它看起来有效:

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

我之前已经完成了这项工作。

我确信这很简单,但今天我看不出这个问题。

任何帮助都将不胜感激。

谢谢, -code

1 个答案:

答案 0 :(得分: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 字典。查看触发此通知的代码。