2016-08-12 9 views
13

Ich habe mein Watch-Projekt in Swift implementiert und jetzt migriere ich wegen Xcode 8 nach Swift 3. Ich lasse Xcode 8 den Quellcode zu Swift 3 ändern. Allerdings gibt es Fehler im Code und Ich kann es nicht herausfinden.Xcode 8 und Swift 3 NSCalendar

let unitFlags: Calendar = [.hour, .firstWeekday, .monthSymbols, .year, .minute, .firstWeekday] 

var calendar = NSCalendar.current 
calendar.timeZone = NSTimeZone(identifier: "UTC")! 
let components = (calendar as NSCalendar).components(unitFlags, from: reservationDate) 

Xcode gibt Fehler in diesen Zeilen und ich kann das Problem nicht verstehen.

ERROR: Contextual type ' Calendar' cannot be used with array literal

ERROR: Argument labels '(identifier:)' do not match any available overloads

ERROR: Cannot convert value of type 'Calendar' to expected argument type 'NSCalendar.Unit'

Antwort

29

Zu allererst weder NSCalendarUnit in Swift 2 noch Calendar.Component in Swift 3 enthält die Komponenten firstWeekday und monthSymbols.

In Swift 3 entspricht der Code ist

let unitFlags = Set<Calendar.Component>([.hour, .year, .minute]) 
var calendar = Calendar.current 
calendar.timeZone = TimeZone(identifier: "UTC")! 
let components = calendar.dateComponents(unitFlags, from: reservationDate) 
Verwandte Themen