如何为这些日子制作一个int计数器

时间:2014-12-31 05:51:25

标签: objective-c iphone xcode nsdate

你如何制作一个int变量让我们说" counter"对于在目标C中经历的每一天,它逐渐增加1。在实现这一点时遇到困难,我在网上看到的大多数消息来源建议找到两个NSDates的差异,但这不是我想要的。有任何建议,谢谢。

2 个答案:

答案 0 :(得分:2)

您可以按照以下步骤查找您要查找的计数器

  1. 创建NSDate对象currentDate
  2. [currentDate timeIntervalSince1970] 获取当前时间,这将返回自1970年以来UTC的当前时间,从而消除了因为您无法追溯到1970年以后更改设备上日期的任何影响。在我的iPhone上
  3. 将此时间保存在NSUserDefaults中作为startTime的时间,如果您的应用程序进入后台或被终止将会有所帮助
  4. 使用 NSTimer scheduledTimerWithTimeInterval 功能安排24小时计时器,它会将计数器增加一个
  5. 计数器递增后,重新启动计时器,以便在24小时后再次更新计数器
  6. 如果您的应用程序因NSTimer停止而终止或变为非活动状态,您可以通过查找当前时间(按照步骤#1和步骤2)与NSUserDefaults中保存时间之间的差异来更新计数器。将其转换为几天,也相应地重置计时器,以便它可以相应地增加计数器
  7. 希望这能解决你的问题。

答案 1 :(得分:0)

诀窍是从两个日期获得NSDateComponents。假设您在日间计数器开始时记录startDate,那么......

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSDayCalendarUnit
                                           fromDate:startDate
                                             toDate:[NSDate date]  // this is "now"
                                            options:0];

会给你一个可以回答的日期组件对象....

NSInteger day = [components day];

使用startDate和现在之间的天数。