0

NSUserDefaultsアプリをバックグラウンド モードにしたときに値を保存し、アプリが再びアクティブになると値が異なります。

値を保存します:

- (void)appDidEnterBackground:(NSNotification *)notification {
    //Tiempo inicial de inactividad

    NSUserDefaults *dispositivo = [NSUserDefaults standardUserDefaults];
    NSTimeInterval timestamp = ([[NSDate date]  timeIntervalSince1970] * 1000);

    [dispositivo setFloat:timestamp forKey:@"StartBackground"];

    NSLog(@"Start background: %f", timestamp);

    [[NSUserDefaults standardUserDefaults] synchronize];
}

ログ:バックグラウンドの開始: 1418731653366.276123

値を回復したい:

- (void)appDidBecomeActive:(NSNotification *)notification {

    NSUserDefaults *dispositivo = [NSUserDefaults standardUserDefaults];
    NSTimeInterval startDate = [dispositivo floatForKey:@"StartBackground"];
    NSLog(@"Start date: %f", startDate);
}

ログ:開始日: 1418731716608.000000

これは、私がこの値を使用する唯一の場所です。よろしくお願いします。

4

2 に答える 2

2

NSTimeInterval を 2 回押すと、次のようになります。

typedef double NSTimeInterval;

したがって、float ではなく double で値を保存する必要があります

[dispositivo setDouble:timestamp forKey:@"StartBackground"];

そしてデータを取得する

NSTimeInterval startDate = [dispositivo doubleForKey:@"StartBackground"];

オブジェクトを保存することが望ましいNSDate:)

于 2014-12-16T12:23:15.023 に答える