所以基本上,我一直在尝试很多我在这里和其他地方读过的东西,而且还没能让它工作。
我一直在使用setObject等将一个NSDate保存为UserDefaults中的对象。然后用[NSData date]等获取当前时间,我的问题是比较。我见过其他人的例子,似乎没有什么能做我需要的。
这只是一个if语句,我需要知道++变量,如果从上次执行它已经过去了18个小时(它保存了NSDate)。否则它只显示一个消息。我遇到的问题是我无法弄清楚如何检查当前日期>保存日期18小时+。有人可以帮忙吗?我已经尝试将它们转换为NSTimeIntervals并从中进行计算,但不知怎的,我搞砸了。
答案 0 :(得分:1)
我会在NSUserDefaults
中为该应用存储 LastAccessDate 。在应用程序打开,启动,激活等时,我会检查timeIntervalSinceNow
这个值是否少于18小时。查看NSDate Class。
示例(未测试):
NSDate *lastAccessDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastAccessDate"]]
NSTimeInterval duration = [lastAccessDate timeIntervalSinceNow];
int hoursPassed = duration / 3600;
答案 1 :(得分:0)
一天限制使用一次是什么意思?你的意思是只让应用程序每天做一次有用的事情吗?当然,这是App Store拒绝的一条道路,特别是如果您在加载应用程序后不让用户做任何事情。
无论如何,如果你想继续这样的事情,逻辑可能是这样的:
NSDate *lastSyncDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"last_app_rundate"];
NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:lastSyncDate];
if ((interval / 3600) >= 18) {
// let your user use your app
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"last_app_rundate"];
}
编辑:回答太慢了!
答案 2 :(得分:0)
试试这个,
NSTimeInterval dateDiff = [lastAccessDate timeIntervalSinceNow];
int hours=trunc(dateDiff/(60*60));