6

私のアプリケーションでは、アプリが初めて起動された日付を保存したいと考えています。
アプリケーションで次のコードを使用しています:didFinishLaunchingWithOptions メソッド

NSDate* today = [NSDate date];
[[NSUserDefaults standardUserDefaults] registerDefaults: @{@"CONSCIENCE_START_DATE" : today}];

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"]);

しかし、アプリケーションを起動するたびに、アプリの起動時刻が出力されます。アプリを起動した日付を印刷していません。

シミュレーターをリセットして、コードを再度実行しようとしました。まだ成功していません。私のコードのエラーを教えてください。

4

2 に答える 2

15

あなたの目標は、ユーザーがアプリを初めて起動したときを追跡することなので、次のようなものが必要ですapplication:didFinishLaunchingWithOptions

NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"];
if (!date) {
    // This is the 1st run of the app
    date = [NSDate date];
    [[NSUserDefaults standardUserDefaults] setObject:date forKey:@"CONSCIENCE_START_DATE"]; // Save date
}

NSLog(@"First run was %@", date);
于 2013-07-11T15:32:07.160 に答える
4

[[NSUserDefaults standardDefaults] synchronize]値を設定した後に呼び出す必要があります。

Apple ドキュメントから:

実行時に、NSUserDefaults オブジェクトを使用して、アプリケーションが使用するデフォルトをユーザーのデフォルト データベースから読み取ります。NSUserDefaults は、デフォルト値が必要になるたびにユーザーのデフォルト データベースを開く必要がないように、情報をキャッシュします。一定の間隔で自動的に呼び出される synchronize メソッドは、メモリ内キャッシュの同期を維持します。

ユーザーのデフォルト データベース。

于 2013-07-11T15:25:58.060 に答える