NSUserDefaults为空

时间:2012-10-01 10:02:18

标签: iphone nsuserdefaults

我正在尝试在应用程序中的NSUserDefaults中保存一些数据:openURL:sourceApplication:annotation:UIApplicationDelegate中的方法,然后在viewDidLoad中读取此数据:在我的主视图控制器中。但是,数据总是空的!

如果我在viewDidLoad中保存相同的数据:在主视图控制器中,它立即可见并且可以恢复,但是当我将它保存在UIApplicationDelegate中时不会。

有什么想法吗?谢谢。

以下是代码:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        // Save my data
        [[NSUserDefaults standardUserDefaults] setURL:url forKey:@"url"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        return YES;
    }

- (void)viewDidLoad
    {
        [super viewDidLoad];

    // It's always false !! 
        if ([[NSUserDefaults standardUserDefaults] URLforKey:@"url"] != nil){
        // Do something with url
        }
}

2 个答案:

答案 0 :(得分:1)

最后,问题是viewDidLoad:在我的主视图控制器之前被调用而不是应用程序:openURL:sourceApplication:annotation :,所以还没有存储任何值。

我必须在其他地方检查NSUserDefaults。

谢谢你们的帮助!

答案 1 :(得分:-3)

在您的代码中,您已在NSUserDefault中编写了NSUrl。尝试使用NSString。 (即[NSString stringWithFormat:@“%@”,url])。

所以它会是[[NSUserDefaults standardUserDefaults] setValue:[NSString stringWithFormat:@"%@",url] forKey:@"url"];