簡體   English   中英

EKRecurrenceRule在一周的工作日內

[英]EKRecurrenceRule for working days in a week

我正在創建具有將事件添加到iPhone日歷的功能的簡單應用程序。 所以我在玩EKEvent的recurrenceRule。 有一個帶有很長構造函數的EKRecurrenceRule類:

(id)initRecurrenceWithFrequency:(EKRecurrenceFrequency)
                   typeinterval:(NSInteger)interval 
                  daysOfTheWeek:(NSArray *)days 
                 daysOfTheMonth:(NSArray *)monthDays 
                monthsOfTheYear:(NSArray *)months 
                 weeksOfTheYear:(NSArray *)weeksOfTheYear 
                  daysOfTheYear:(NSArray*)daysOfTheYear 
                   setPositions:(NSArray *)setPositions 
                            end:(EKRecurrenceEnd*)end

因此,例如,如果我嘗試創建一個將在一周中的每個工作日(星期日除外)重復的事件,則將使用此init:

initRecurrenceWithFrequency:EKRecurrenceFrequencyDaily 
                   interval:1 
              daysOfTheWeek:[NSArray arrayWithObjects:
                                [EKRecurrenceDayOfWeek dayOfWeek:2],
                                [EKRecurrenceDayOfWeek dayOfWeek:3],
                                [EKRecurrenceDayOfWeek dayOfWeek:4],
                                [EKRecurrenceDayOfWeek dayOfWeek:5], 
                                [EKRecurrenceDayOfWeek dayOfWeek:6],
                                [EKRecurrenceDayOfWeek dayOfWeek:7], nil] 
            daysOfTheMonth:nil 
           monthsOfTheYear:nil 
            weeksOfTheYear:nil 
             daysOfTheYear:nil 
              setPositions:nil 
                       end:nil

但它不起作用,它每天重復一次事件:S當我嘗試使用EKRecurrenceFrequencyMonthly時,它可以工作。 它每月重復一次活動,但周日不重復。 我向Apple報告了錯誤,因為似乎他們有錯誤。

還是您有其他想法?

創建復雜的重復規則

“星期幾。對於每日重復規則以外的所有重復規則,您可以提供一個EKRecurrenceDayOfWeek對象數組,該數組指示事件發生在一周中的星期幾。例如,您可以提供一個包含EKRecurrenceDayOfWeek對象的數組,該對象的日期為EKTuesday和EKFriday的周值來創建每周二和周五發生的重復。”

換句話說,您要使用的是星期一至星期五,然后每周重復一次。 每天重復周一至周五毫無意義。

initRecurrenceWithFrequency:EKRecurrenceFrequencyDaily 
                   interval:1 
              daysOfTheWeek:[NSArray arrayWithObjects:
                                [EKRecurrenceDayOfWeek dayOfWeek:2],
                                [EKRecurrenceDayOfWeek dayOfWeek:3],
                                [EKRecurrenceDayOfWeek dayOfWeek:4],
                                [EKRecurrenceDayOfWeek dayOfWeek:5], 
                                [EKRecurrenceDayOfWeek dayOfWeek:6],
                                [EKRecurrenceDayOfWeek dayOfWeek:7], nil] 
            daysOfTheMonth:nil 
           monthsOfTheYear:nil 
            weeksOfTheYear:nil 
             daysOfTheYear:nil 
              setPositions:nil 
                       end:nil

在此代碼中,您EKRecurrenceFrequencyDaily使用EKRecurrenceFrequencyDaily並再次指定一周中的幾天。 而不是嘗試使用EKRecurrenceFrequencyWeekly執行

EKRecurrenceDayOfWeek *weekReferecne=[[EKRecurrenceDayOfWeek alloc]initWithDayOfTheWeek:2 weekNumber:0];

並創建第0周(零)的EKRecurrenceDayOfWeek對象,以便EKAlarm每天重復一次,直到您指定結束日期為止。此代碼有效。 祝您編碼愉快

蘋果文檔說:

@method initRecurrenceWithFrequency:interval:daysOfTheWeek:daysOfTheMonth:monthsOfTheYear:weeksOfTheYear:daysOfTheYear:setPositions:end:

@abstract指定的初始化程序。

@discussion這可用於構建任何種類的重復規則。 但是請注意, 某些組合沒有意義 ,將被忽略。 例如, 如果您通過daysOfTheWeek進行每日重復,則將忽略它們

我認為,我們不能每天都說,而不能在星期天說。 如果我弄錯了,請告訴我。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM