2016-11-22 73 views
1

我正在編寫iOS應用程序的一項功能,它涉及在每週的特定幾天安排每週重複本地通知。我想正確使用NSCalendar API,所以我不認爲我不應該這樣做。但是我沒有看到NSCalendar上一週有多少天有任何財產。將NSCalendar.weekdaySymbols索引轉換爲NSDateComponents.weekday

我使用weekdaySymbols顯示本週的幾天,並讓用戶選擇他們想要通知的日期。然後我基於此安排本地通知。

真正的問題是:如何將一天中的weekdaySymbols索引轉換爲NSDateComponentsweekday值?

+0

它取決於日曆標識符。一個「格里曆」的日曆一週有7天。 – vadian

+0

@vadian什麼是不是日曆?什麼是告訴設備是否設置爲其中一個日曆的最佳方式? –

+0

不幸的是,我不熟悉其他日曆比格利高裏。 – vadian

回答

1

這有點簡化,但您可以將星期幾認爲屬於公曆,而與實際使用的日曆無關。這些日曆在很大程度上管理日/月/年算術,一週中的日子獨立於每個日曆的數量和月數。

如果您接受爲給定的,那麼您只需要更正日曆的weekdaySymbols(索引從0到6)和NSDateComponents.weekday(值從1到7)之間的偏差。

extension DateComponents {  // NSDateComponents in Swift < 3 
    func weekdaySymbol(in calendar: Calendar) -> String? { 
     guard let weekday = self.weekday else { return nil } 
     return calendar.weekdaySymbols[weekday - 1] 
    } 
} 
+0

太棒了。你的意思是讓'weekday'成爲'func weekdaySymbol'的一個參數嗎? –

+1

不,它是'DateComponents'的屬性 - 我會添加'self',所以它更清晰。 –

+1

啊,謝謝。我應該抓住這一點 - 畢竟,財產是我問題的一個組成部分。但我並沒有很快就做了很多,我不習慣於指沒有「自我」的房產。 –

相關問題