返回后台时NSUserDefaults的值不同

时间:2014-12-16 12:16:39

标签: ios objective-c nsuserdefaults nsusernotification

当我将应用程序置于后台模式时,我在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

这是我使用此值的唯一地方。 谢谢你提前。

2 个答案:

答案 0 :(得分:2)

NSTimeInterval正在双击它,你会得到

typedef double NSTimeInterval;

所以你应该将值保存在double而不是float

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

并获取数据

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

最好保存NSDate对象:)

答案 1 :(得分:0)

没有任何问题,因为您正在使用[NSDate日期] ...它将更新当前时间......