【问题标题】:Get data from AppDelegate to ViewController in iOS在 iOS 中从 AppDelegate 获取数据到 ViewController
【发布时间】: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"];

当我第一次尝试时,它可以工作,但下一次应用程序崩溃了...当我从视图控制器中删除该代码时,它可以工作,所以那里一定是错误的...你能帮我吗?

【问题讨论】:

  • 你能把错误日志贴出来吗...

标签: ios viewcontroller appdelegate


【解决方案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");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2014-08-29
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多