2014-12-16 3 views
0

Я сохраняю значение в NSUserDefaults, когда я помещаю свое приложение в фоновом режиме, а затем, когда приложение становится активным снова, значение отличается.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); 
} 

Log: Дата Начало: 1418731716608,000000

Это единственное место, где я использую это значение. Благодарим вас за продвижение.

+1

Вы можете просто хранить сам объект NSDate в NSUserDefaults вместо сохранения его в качестве поплавка. – ZeMoon

+0

Вам нужно будет хранить двойное значение вместо float! –

+0

с двойным значением результат тот же – amurcia

ответ

0

Там ничего не заладилось, потому что вы используете [дата] NSDate ... он обновляет текущее время ...

+0

Я использую [NSDate date], чтобы сохранить дату, прежде чем я войду в фоновом режиме не позже. Позже я читаю значение в nsuserdefaluts – amurcia

+0

http://stackoverflow.com/questions/2013850/whats-the-optimum-way-of-storing-an-nsdate-in-nsuserdefaults...go через это однажды – madhu

2

NSTimeInterval в двойное нажатие на него, и вы получите

typedef double NSTimeInterval; 

так что вы должны сохранить значение в два раза не в поплавка

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

и получить данные

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

ее предпочтительнее сохранить NSDate объект :)

+0

Там нет setDouble метод, связанный с NSUserDefaults – ZeMoon

+1

@ ZeMoon вы должны проверить пожалуйста. –

+0

Вы правы ... Мой плохой: P – ZeMoon

Смежные вопросы