2017-08-13 69 views
0

我有幾個的稱取枚舉的陣列作爲參數的方法的一個參數,但是我看到,例如改變的時間間隔爲組件的情況下,我請接受多個枚舉與迅速

func components(_ unitFlags: NSCalendar.Unit, from startingDate: Date, to resultDate: Date, options opts: NSCalendar.Options = []) -> DateComponents 

其中unitFlags接受多個值。例如,即使函數參數未定義爲NSCalendar單位數組,我也可以傳遞[.year, .month]。我如何在自定義枚舉/函數中實現這種行爲?

由於

+1

'NSCalendar.Unit'是[OptionSet](https://developer.apple.com/documentation/swift/optionset),不是枚舉,而是混合了Swift 2和3語法。在Swift 3中,它是'Calendar.Component',整個方法是'func dateComponents(_ components:Set ,從start:Date到end:Date) - > DateComponents' – vadian

+0

感謝vadian,我將不得不採取看看OptionSet,我從來沒有聽說過這樣的事情。 (我的例子是Swift 4) –

+1

Swift 3和4中的方法簽名是相同的,我說的是本機'Calendar'結構而不是'NSCalendar'。不要在Swift 3+中使用'NSCalendar'。 – vadian

回答

2

例如,我可以通過[.year, .month]

即不枚舉的陣列。這是一個Option Set。實際上,這裏所期望的是一組結構靜態屬性。

這是一個很好的語法,但它可能不適合你的用例,因爲你真的可能想要一個枚舉數組。選項集是構建和操作位掩碼的一種方式,這不是你所擁有的。