Время между запусками iPhone - PullRequest
1 голос
/ 31 октября 2009

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

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

и так далее, просто предположим, что в этом примере не было потрачено времени в приложении, но, конечно, я бы хотел, чтобы оно продолжало увеличиваться, пока приложение открыто. Я бы предположил, что мне нужно где-то сохранить значение, затем сравнить его с (текущее время - в прошлый раз) и сложить числа вместе, но я не уверен, как это сделать. Спасибо.

Ответы [ 3 ]

3 голосов
/ 31 октября 2009

Используйте 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"];
2 голосов
/ 24 августа 2010
NSDate *dateOfLastLaunch = [NSDate dateWithString: [[NSUserDefaults standardUserDefaults] stringForKey:@"dateOfLastLaunch"]; 

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

0 голосов
/ 31 октября 2009

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

Edit:

Я сохраняю отметку времени в NSUserDefaults, выполняя это:

NSString *timestamp = [NSString stringWithFormat:@"%d", (long)[[NSDate date] timeIntervalSince1970]];  
[[NSUserDefaults standardUserDefaults] setObject:timestamp forKey:@"timestamp"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...