推出iPhone之间的时间过去了

时间:2009-10-31 18:09:42

标签: iphone time

我想要一个静态时间指示器,从0开始随时间推移计数。我正在制作的游戏将在一定天数后发生变化。我确信这是一个简单的问题,但我怎么能存储总时间,甚至是在发布之间?

所以...,首次发布,时间= 0;
第二次发射一小时后的时间= 60;
第三次发布,一天后,时间= 86460;

依此类推,假设在这个例子中没有花时间在应用程序中,但当然,我希望它在应用程序打开时继续增加。我想我必须在某个地方存储一个值,然后将它与(当前时间 - 上次)进行比较并将数字加在一起,但我不知道该怎么做。感谢。

3 个答案:

答案 0 :(得分: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"];

答案 1 :(得分:2)

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

你在iPhone上获得“dateWithString”的地方?

答案 2 :(得分:0)

我在其中一个应用中做了类似的事情。我所做的是存储首次启动应用程序的日期和时间。启动应用程序后,每次从当前时间戳中减去第一个启动时间戳。当我的应用程序打开时,我不断增加。

修改

我通过这样做将时间戳保存到NSUserDefaults:

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