2016-08-12 19 views
13

Zaimplementowałem mój projekt zegarka w Swift i teraz migaję do Swift 3 z powodu Xcode 8. Pozwalam Xcode 8 zmienić kod źródłowy na Swift 3. Jednak są błędy w kodzie i Nie mogę tego rozgryźć.Xcode 8 i 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 podaje błąd w tych liniach i nie mogę zrozumieć problemu.

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'

Odpowiedz

29

Przede wszystkim ani NSCalendarUnit w Swift 2 ani Calendar.Component w Swift 3 zawierają składniki firstWeekday i monthSymbols.

w Swift 3 odpowiednik kodu jest

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