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が設定されていません。名前オブジェクトだけがあります。あなたの出力をこれと比較してください...

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ディクショナリが含まれていません。この通知を発行するコードを見てください。

于 2012-07-20T11:06:46.940 に答える