1

我正在创建一个基于提醒的应用程序,例如 iPhone 附带的简单闹钟。我正在使用 Core Data 并有一个具有 NSDate 属性的警报实体,用于用户安排警报应该响起的时间。我还希望能够安排像闹钟这样的重复事件。我想知道这样做的好方法是什么?我知道如果事件在 NSCalendarUnit 之后的某些事件上重复,您可以设置重复间隔。但是只有工作日、每隔一天或周一、周三、周五等没有重复间隔。

到目前为止,我唯一的解决方案是创建另一个具有 Sun-Sat 字符串表示形式的简单实体。每个警报实体都有这些 DaysOfTheWeekEntities 的 NSSet。然后,当我想为警报安排 UILocalNotification 时,我会在具有原始创建日期的数据库中查找该警报,从 DaysOfTheWeek 属性计算下个月的下一个重复警报。

我不确定是否有更好的方法来做到这一点。谢谢!

4

1 回答 1

0

一种“智能”方案是cron在 unix 系统上使用该实用程序的方案。

来自man crontab

时间和日期字段是:

    field      allowed values
    -----      --------------
    minute         0-59
    hour       0-23
    day of month   1-31
    month      1-12 (or names, see below)
    day of week    0-7 (0 or 7 is Sun, or use names)

   A field may be an asterisk (*), which always stands for "first-last".

   Ranges of numbers are allowed.  Ranges are two numbers separated with a
   hyphen.    The specified range is inclusive.  For example,  8-11  for  an
   "hours" entry specifies execution at hours 8, 9, 10 and 11.

   Lists are allowed.  A list is a set of numbers (or ranges) separated by
   commas.    Examples: "1,2,5,9", "0-4,8-12".

   Step values can be used in conjunction with ranges.  Following a    range
   with  "<number>"    specifies  skips  of  the  number's value through the
   range.  For example, "0-23/2" can be used in the hours field to specify
   command    execution every other hour (the alternative in the V7 standard
   is "0,2,4,6,8,10,12,14,16,18,20,22").  Steps are also  permitted    after
   an asterisk, so if you want to say "every two hours", just use "*/2".
于 2013-01-16T10:48:36.870 回答