1

iPhone に同梱されているシンプルな目覚まし時計のようなリマインダー ベースのアプリを作成しています。Core Data を使用しており、ユーザーがアラームを鳴らす時間をスケジュールするための NSDate 属性を持つアラーム エンティティがあります。目覚まし時計のような定期的なイベントをスケジュールする機能も必要です。これを行う良い方法は何だろうと思っていました。NSCalendarUnit に続く特定のイベントでイベントが繰り返される場合、繰り返し間隔を設定するだけでよいことを私は知っています。ただし、平日のみ、または隔日または月、水、金などの繰り返し間隔はありません。

これまでのところ、私が持っている唯一の解決策は、Sun-Sat の文字列表現を持つ別の単純なエンティティを作成することです。各アラーム エンティティには、これらの DaysOfTheWeekEntities の NSSet があります。次に、アラームの UILocalNotification をスケジュールする場合、元の作成日を持つデータベースでそのアラームを検索し、DaysOfTheWeek プロパティから翌月の次の繰り返しアラームを計算します。

これを行うためのより良い方法があるかどうかはわかりませんでした。ありがとう!

4

1 に答える 1

0

1 つの「スマートな」スキームは、cronUNIX システムでユーティリティのスキームを使用することです。

から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 に答える