我正在嘗試使用這些值設置UILocalNotification的RepeatInterval,但與往常一樣,Apple文檔模糊不清。iPhone - NSWeekCalendarUnit和NSWeekdayCalendarUnit有什麼不同?
任何線索?
謝謝。
我正在嘗試使用這些值設置UILocalNotification的RepeatInterval,但與往常一樣,Apple文檔模糊不清。iPhone - NSWeekCalendarUnit和NSWeekdayCalendarUnit有什麼不同?
任何線索?
謝謝。
也許看看this blog I just found關於這個問題?
AFAIK,NSCalendarUnits
主要用於將日期或時間間隔拆分爲日期組件(NSDateComponents
),以提取日期的工作日,日期的年份,時間的小時分量等。
在這種情況下:
NSWeekCalendarUnit
對應於本週指數在一年(從1到52個星期 - 或第53年53周)NSWeekdayCalendarUnit
相當於一天本週(從週一到週日)NSDayCalendarUnit
相當於一天的一年(從1到365)當使用NSCalendarUni與repeatingInterval
噸類型,UILocalNotification將被觸發時,相應的單位的變化:
NSWeekCalendarUnit
每週將觸發通知(每7天)NSWeekdayCalendarUnit
將觸發通知「每個工作日」,其對應於與NSDayCalendarUnit
相同,這對應於repeatInterval上下文中的「每天」。可可和Objective-C可以很容易地敲了快速測試程序,看看結果。如果你不確定文件,你可以隨時檢查自己。我有一個構建基礎命令行工具的項目,我只需在main.m中輸入這些代碼片段並記錄它們以查看API返回的內容。
例如,我只是跑這樣的:
unsigned flags = NSWeekCalendarUnit;
NSDateComponents *components = [[NSCalendar currentCalendar] components:flags fromDate:[NSDate date]];
NSLog(@"Week: %ld", [components week]);
flags = NSWeekdayCalendarUnit;
components = [[NSCalendar currentCalendar] components:flags fromDate:[NSDate date]];
NSLog(@"WeekDay: %ld", [components weekday]);
,並得到
Week: 37
Weekday: 7
它可以快速地看到WeekCalendar單位給出這個作爲今年的第37周和週日說,這(這是星期六今天)是一週中的第七天(因爲我知道公曆是星期日爲第一天)。
謝謝,但在UILocalNotification的repeatInterval的上下文中,這意味着什麼?自上次發佈後的37周或7天后,通知會再次觸發? – SpaceDog
男人,我必須服用更多的維生素,因爲我的大腦因爲這個解釋而受傷。你說的是,當在repeatInterval上下文中使用時:NSWeekCalendarUnit在每週的同一天每週敲響一次鍾,NSWeekdayCalendarUnit = NSDayCalendarUnit =每天敲響鐘,對吧?如果這是真的,那麼蘋果公司的某個人很瘋狂,應該在一個軟墊的牢房內直行。看在上帝的份上。請確認。感謝你的回答。 – SpaceDog
是的,我確認,這是合乎邏輯的。 'NSWeekCalendarUnit' =每週一次。 'NSDayCalendarUnit' =每天一次。 'NSWeekdayCalendarUnit' =不使用它,在'repeatingInterval'背景下,以避免再次閱讀你的代碼時有頭痛,並保持它,當你在拆分日起'NSDateComponents'的上下文中使用它。 – AliSoftware
爲什麼蘋果文檔不是這樣寫的?顯然有兩個蘋果:一個驚人的,簡單的,對於客戶來說,一個是開發者的煉獄。謝謝你的幫助。 – SpaceDog