2012-12-05 8 views
1

AppDelegate.m에 다음 메소드가 있습니다. 내 UIViewController보기 컨트롤러에 appdelegate 데이터를 전달합니다.

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{ 
NSLog(@"My token is: %@", deviceToken); 
ViewController *viewController = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; 
viewController.tokenStr = [NSString stringWithFormat:@"%@",deviceToken]; 
} 

deviceToken의 값을 원하지만 내가 UIViewControllerNSLog(@"%@",tokenStr);을 표시 할 때 나는 (NULL)을 얻고있다. 내 UIViewController의 값을 어떻게 얻을 수 있습니까?

+0

어떻게'ViewController'를 보여 줍니까? 그 객체를 밀기 바로 전에 이것을 추가하십시오. – iDev

+0

죄송합니다. 무슨 뜻인지 이해가되지 않습니까? –

+0

화면에 ViewController를 표시하기 위해 작성한 코드를 게시 할 수 있습니까? 위의 코드는 객체를 생성하고 다른 작업은 수행하지 않습니다. 화면에 표시 할 내용이 있어야합니다. 거기에 추가해야합니다. – iDev

답변

3

AppDelegate, 당신은 당신이 [UIApplication sharedApplication].delegate과 AppDelegate에 대한 참조를 가질 수

[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"DeviceToken"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

같은 NSUserDefaults에서 deviceToken 값을 저장하고

[[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"]; 
+0

나는 아직도 NULL을 얻고 있습니다. –

+0

기기 또는 iOS 시뮬레이터를 실행하는 곳입니다. 시뮬레이터에서 실행 중이면 항상 NULL을 반환합니다.기기에서 사용해보세요. – arthankamal

+0

기기에서 실행 중입니다. 내가 처음으로 그것을 달렸을 때 그것은 값을 보여주고있는 후에 null을 보여주고 있었는데, 왜 그런가? –

1

를 사용하는 뷰 컨트롤러에서 그 값을 검색 할 수 있습니다.
귀하의 필요에 따라 다릅니다. NSUserDefaults에 실제로 저장해야하는 토큰과 같은 것이 사용자의 자격 증명과 토큰을 저장하도록 설계되었습니다. 그러나 모든 viewController에서 AppDelegate의 모든 public 속성 및 메서드를 사용하려는 경우 대리자를 사용할 수 있습니다. AppDelegate.m 클래스에서

AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 
NSString *token = appDelegate.token; 
1

:의 ViewController 클래스에서

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{ 
    NSLog(@"My token is: %@", deviceToken); 

    NSString *device = [deviceToken description]; 
    device = [device stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
    device = [device stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    NSLog(@"My device is: %@", device); 

    [[NSUserDefaults standardUserDefaults] setObject:device forKey:@"MyAppDeviceToken"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

,의 viewDidLoad 방법 내부 :

[super viewDidLoad]; 

    NSString *deviceToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAppDeviceToken"]; 
    NSLog(@"device token in controller: %@ ", deviceToken); 

이 내 장치에서 완벽하게 작동한다. 해피 코딩 !! :)

관련 문제