0

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

-(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;
}}

我以前做过这个并且它的工作。

我敢肯定它很简单,但今天我看不到这个问题。

任何帮助,将不胜感激。

谢谢,-代码

4

1 回答 1

2

这很简单,看看你的日志输出......你的通知中没有设置userInfo 。只有nameobject。将您的输出与此进行比较...

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;
}}

... 看到不同?日志输出中有nameobject,还有userInfo

所以答案是 - 您的通知不包含userInfo字典。查看触发此通知的代码。

于 2012-07-20T11:06:46.940 回答