0

我试图在 UIApplicationDelegate 中的 application:openURL:sourceApplication:annotation: 方法中的 NSUserDefaults 中保存一些数据,然后在我的主视图控制器中的 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
        }
}
4

2 回答 2

1

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

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

谢谢你们的帮助!

于 2012-10-02T08:30:21.810 回答
-3

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

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

于 2012-10-01T10:08:30.040 回答