我正在尝试在应用程序中的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
}
}
答案 0 :(得分:1)
最后,问题是viewDidLoad:在我的主视图控制器之前被调用而不是应用程序:openURL:sourceApplication:annotation :,所以还没有存储任何值。
我必须在其他地方检查NSUserDefaults。
谢谢你们的帮助!
答案 1 :(得分:-3)
在您的代码中,您已在NSUserDefault中编写了NSUrl。尝试使用NSString。 (即[NSString stringWithFormat:@“%@”,url])。
所以它会是[[NSUserDefaults standardUserDefaults] setValue:[NSString stringWithFormat:@"%@",url] forKey:@"url"];