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 に答える