Возьмите для этих двух методов в NSCalander
классе:Опции Enum Эквивалент в Swift
component(unit: NSCalanderUnit, fromDate: NSDate) -> Int
components(unitFlags: NSCalanderUnit, fromDate: NSDate) -> NSDateComponents
В первом методе мы называем его с одним NSCalanderUnit:
someCalander.component(unit: .Minute, fromDate: NSDate())
Во втором методе сигнатура типа предполагает, что мы даем ей один NSCalanderUnit, но на самом деле для обеспечения более чем одного устройства нам нужно будет вызвать метод следующим образом:
components(unitFlags: [.Hour, .Day], fromDate: NSDate)
Теперь я понимаю причину этого говоря, что это требует всего лишь NSCalanderUnit в отличие от [NSCalanderUnit] является то, что структура какао была написана в Objective-C, а затем ликвидирует код быстрым. В Objective-C NSCalanderUnit
является перечнем NS_Option «perum». В которой мы используем битовую маску для объединения нескольких флагов (или «опций»), мы используем побитовый оператор |.
Так что мой вопрос:
Почему мы называем его в квадратных скобках вместо вызова его следующим образом:
components(unitFlags: .Hour | .Day, fromDate: NSDate)
Посмотрите мою книгу, если вам не потрудились прочитать документацию Apple: http://www.apeth.com/swiftBook/ch04.html#SECoptionsSets – matt