用通知中心传值时候的注意事项

当用通知中心 去传值的时候  通常 传的 都是字典

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSDictionary *dic=[defaults objectForKey:@"forcedUpdateResponseObject2"];

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

[nc  postNotificationName:forcedUpdateGameVersion object:nil userInfo:dic];

然后 在 appdelegate中设置 注册通知的方法 接收 传递的字典

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(forcedUpdateNotice:) name:forcedUpdateGameVersion object:nil];

return YES;

}

-(void)forcedUpdateNotice:(NSNotification *)text

{

//获取值得时候 不能直接用text.userInfo[@"forcedUpdateResponseObject2"] 来获取

//这样获取到得值 是nil的  要想得到字典的值  直接 text.userInfo[@"data"],text.userInfo[@"errorCode"] 其中 data ,errorCode  都是forcedUpdateResponseObject2字典中键

NSLog(@"测试token的通知data=%@ errorCode= %@errorMessage  %@",text.userInfo[@"data"],text.userInfo[@"errorCode"],text.userInfo);

NSDictionary *dic=text.userInfo[@"forcedUpdateResponseObject2"];

  int errorCode=[text.userInfo[@"errorCode"]intValue];

NSLog(@"!!!!!!%@",dic);

//最 最 最 需要注意的 :

//有时候 你如果 直接 text.userInfo[@"errorCode"]这样 获取 字典中得某个值的时候 你还是获取不到(前提是 你确定传值了),明明传值了 为什么errorCode还是获取不到值呢

然后 我就打印nslog 下  发现 这时候errorCode 才有值了

就好像 nslog 先声明了一下似的  这个 bug  目前 只能这样处理下  至于 原因 我目前还没找到 可能有两种猜测 一个是我们后台的原因 一个 就是Xcode的一个bug

}

时间: 2024-08-07 16:53:11

用通知中心传值时候的注意事项的相关文章

NSNotificationCenter 通知中心传值

1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) NSString *name;   这个成员变量定义一个对象,可以理解为针对某一个对象的消息. @property (readonly, retain) id object;   这个成员变量是一个字典,可以用其来进行传值. @property (readonly, copy) NSDictionar

UI_通知中心_传值的一种方法

NSNotification 通知中心传值,可以跨越多个页面传值, 一般也是从后面的页面传给前面的页面. 思路: 第三个界面的值传给第一个界面. 1. 在第一个界面建立一个通知中心, 通过通知中心,注册一个监听事件 2. 在第一个界面中,设置接收到通知的事件. 3. 在第一个界面中的dealloc中, 将通知中心remove掉 4. 在第三个界面中, 建立一个通知中心, 通过通知中心, 发送通知(发送通知的过程就是传值的过程,将要传输的值作为object的值传给第一个界面 代码片段: 第一界面:

iOS之NSNotificationCenter通知中心使用事项

其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制的,我们控制不了,我们只能控制监听操作,类似于Android中系统发送的广播,我们只能接受.但是通知就不一样了,他的监听发送也是又我们自己控制,我们可以在任何地方任何时机发送一个通知,类似于Android中开发者自己发送的广播.从这一点看来,通知的使用场景更为广泛了. 下面就来看一下例子: 还是护士和小孩的那个例子 Children.h [objc] vi

通知中心的只用NSNotificationCenter传值 和打电话,发短信,邮件,打开网页的直接打开的功能

通知中心的使用 第一个页面三部; 产生一个通知中心的对象(系统的一个单例类) 在通知中心注册一个观察者 收到通知后调用的方法 dealloc移除观察者的身份 第二个页面 发送通知中心 创建一个字典 返回你要的数据 直接跳转的功能     //直接跳入的功能;     //打电话     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://110"]];     //发短信     [[UIApp

iOS 通知中心

原文地址 : http://www.jianshu.com/p/1208724e1915 iOS 提供了一种 "同步的" 消息通知机制NSNotificationCenter,观察者只要向消息中心注册, 即可接受其他对象发送来的消息,消息发送者和消息接受者两者可以互相一无所知,完全解耦.消息机制常常用于在向服务器端请求数据或者提交数据的场景,在和服务器端成功交互后,需要处理服务器端返回的数据,或发送响应消息等,就需要用到消息机制 一.通知相关的类 NSNotification 这个类可

IOS中通知中心NSNotificationCenter应用总结

一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息. @property (readonly, retain) id object; 这个成员变量是一个字典,可以用其来进行传值. @property (readonly, copy) NSDi

IOS中通知中心NSNotificationCenter(自定义或系统自带)应用总结

一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息. @property (readonly, retain) id object; 这个成员变量是一个字典,可以用其来进行传值. @property (readonly, copy) NSDi

IOS中通知中心(NSNotificationCenter)的使用总结

一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息. @property (readonly, retain) id object; 这个成员变量是一个字典,可以用其来进行传值. @property (readonly, copy) NSDi

IOS开发中如何使用通知NSNotification传值

通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便.便捷,一个简单的Demo实现通知的跳转传值. 输入所要发送的信息 ,同时将label的值通过button方法调用传递, - (IBAction)buttonClick:(id)sender { //添加 字典,将label的值通过key值设置传递 NSDictionary *dict =[[NSDictionary alloc]initWithObjectsAndKeys:self.textFieldOne.text,@"te