在 iOS 中从 AppDelegate 获取数据到 ViewController
Posted
技术标签:
【中文标题】在 iOS 中从 AppDelegate 获取数据到 ViewController【英文标题】:Get data from AppDelegate to ViewController in iOS 【发布时间】:2013-05-06 19:56:11 【问题描述】:我有 ios 项目 i xcode,我需要从 Appdelegate 获取设备令牌以查看控制器,这里是 App 委托的代码:
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后,在视图控制器中:
[super viewDidLoad];
[[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
当我第一次尝试时,它可以工作,但下一次应用程序崩溃了...当我从视图控制器中删除该代码时,它可以工作,所以那里一定是错误的...你能帮我吗?
【问题讨论】:
你能把错误日志贴出来吗... 【参考方案1】:首先,从手机/模拟器中删除您的应用。 因为 NSUserDefaults 可能为您的密钥保存错误的数据。
然后用这些替换你的代码,
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
if(deviceToken)
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
在 viewDidLoad 中,
- (void)viewDidLoad
[super viewDidLoad];
id token = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
if(token)
NSLog(@"I have got the token");
else NSLog(@"no token");
【讨论】:
以上是关于在 iOS 中从 AppDelegate 获取数据到 ViewController的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中从 AppDelegate 调用视图控制器
在 Swift 中从 AppDelegate 解开 UIWindow 两次
何在混合应用程序(主要语言 ObjC)中从 Swift 获取对 appdelegate 的引用以避免引用循环
如何在 App Delegate 的“performFetchWithCompletionHandler”函数中从 Alamofire 获取数据?