簡體   English   中英

在iOS中將數據從AppDelegate獲取到ViewController

[英]Get data from AppDelegate to ViewController in iOS

我有xcode的ios項目,我需要從Appdelegate獲取設備令牌以查看控制器,這是App委托的代碼:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{    
    [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

然后,在視圖控制器中:

[super viewDidLoad];    
[[NSUserDefaults standardUserDefaults] objectForKey:@"token"];

當我第一次嘗試它時,它正在工作,但是下一次應用程序崩潰了...當我從視圖控制器中刪除該代碼時,它可以工作,所以在那里一定是錯誤的...您能幫我嗎?

首先,從手機/模擬器中刪除您的應用程序
因為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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM