2009-10-31 8 views
1

Я бы хотел, чтобы индикатор статического времени, отсчитываемый от 0 до любого времени. Игра, которую я создаю, изменится по прошествии определенного количества дней. Я уверен, что это простой вопрос, но как я могу сохранить общее время, даже между запусками?Прошло время между запусками, iPhone

Итак ..., первый запуск, время = 0;
Второй запуск через час время = 60;
Третий запуск, через день, время = 86460;

и т. Д., Просто не предполагайте, что в приложении для этого примера не было потрачено никакого времени, но, конечно, я бы хотел, чтобы он продолжал увеличиваться, пока приложение открыто. Я бы предположил, что мне нужно где-то хранить значение, а затем сравнить его с текущим временем - в последний раз и добавить числа вместе, но я не уверен, как это сделать. Благодарю.

ответ

3

Используйте NSUserDefaults хранить количество времени в секундах, прошедшее с момента первого запуска в ключе а также дату и время последнего запуска вашего приложения в другом ключе. Когда вы запустите приложение, прочитайте значения и добавьте к сумме разницу между текущей датой и временем и предыдущим сохраненным. Затем напишите по умолчанию новые обновленные значения, чтобы вы снова читали при следующем запуске приложения.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

int timePassed = [[NSUserDefaults standardUserDefaults] intForKey:@"timePassed"]; 
NSDate *dateOfLastLaunch = [NSDate dateWithString: [[NSUserDefaults standardUserDefaults] stringForKey:@"dateOfLastLaunch"]; 

//Adds the time passed since the last launch 
timePassed += [NSDate timeIntervalSinceDate: dateOfLastLaunch]; 

//Saves the new values 
[defaults setObject:[NSNumber numberWithInt: timePassed] forKey:@"timePassed"]; 
[defaults setObject:[NSDate date] forKey:@"dateOfLastLaunch"]; 
+0

Ах! UserDefaults, вот что я пытался запомнить и не мог вспомнить, что искать. Я помнил, что он упоминал это в фильмах Стэнфорда, но не мог, чтобы жизнь меня снова находила. Благодаря! – nullArray

+0

Обратите внимание, что этот код почти полностью устарел от языка –

0

Я делаю что-то подобное в одном из моих приложений. То, что я делаю, - это дата и время, когда приложение запускается впервые. Каждое последующее время запуска приложения выполняет вычитание первой метки времени запуска из текущей временной метки времени. Пока мое приложение открыто, я постоянно наращиваю.

Edit:

откладывает отметку времени NSUserDefaults, делая это:

NSString *timestamp = [NSString stringWithFormat:@"%d", (long)[[NSDate date] timeIntervalSince1970]]; 
[[NSUserDefaults standardUserDefaults] setObject:timestamp forKey:@"timestamp"]; 
+0

Я думаю, что вы хотите «% lul» вместо «% d» выше. – Fluffhead

2
NSDate *dateOfLastLaunch = [NSDate dateWithString: [[NSUserDefaults standardUserDefaults] stringForKey:@"dateOfLastLaunch"]; 

Где вы получаете "dateWithString" на iPhone?

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

  • Нет связанных вопросов^_^