2011-09-17 23 views

回答

4

也許看看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上下文中的「每天」。
+0

男人,我必須服用更多的維生素,因爲我的大腦因爲這個解釋而受傷。你說的是,當在repeatInterval上下文中使用時:NSWeekCalendarUnit在每週的同一天每週敲響一次鍾,NSWeekdayCalendarUnit = NSDayCalendarUnit =每天敲響鐘,對吧?如果這是真的,那麼蘋果公司的某個人很瘋狂,應該在一個軟墊的牢房內直行。看在上帝的份上。請確認。感謝你的回答。 – SpaceDog

+1

是的,我確認,這是合乎邏輯的。 'NSWeekCalendarUnit' =每週一次。 'NSDayCalendarUnit' =每天一次。 'NSWeekdayCalendarUnit' =不使用它,在'repeatingInterval'背景下,以避免再次閱讀你的代碼時有頭痛,並保持它,當你在拆分日起'NSDateComponents'的上下文中使用它。 – AliSoftware

+0

爲什麼蘋果文檔不是這樣寫的?顯然有兩個蘋果:一個驚人的,簡單的,對於客戶來說,一個是開發者的煉獄。謝謝你的幫助。 – SpaceDog

0

NSWeekdayCalendarUnit意味着每個星期日我們都會通知您。

NSWeekCalendarUnit意味着每7天的通知將未來

+0

是不是都一樣?從一個星期天到下一個星期,我們有7天...我的大腦正在受傷。 – SpaceDog

+0

如果u r添加通知當天,這是週日在這種情況下,兩者都是工作相同,但如果u要添加通知僅weeknd然後u使用NSWeekdayCalenderUnit。這意味着每個週末你都會收到通知。在nsWeekCalenderUnit meand當天到第7天之後。你的通知將會通過。 – Ron

2

可可和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周和週日說,這(這是星期六今天)是一週中的第七天(因爲我知道公曆是星期日爲第一天)。

+0

謝謝,但在UILocalNotification的repeatInterval的上下文中,這意味着什麼?自上次發佈後的37周或7天后,通知會再次觸發? – SpaceDog

相關問題