2016-08-12 11 views
13

私はSwiftで腕時計プロジェクトを実装しましたが、今はXcode 8のためSwift 3に移行しています.Xcode 8でSwift 3にソースコードを変更させました。私はそれを把握することはできません。Xcode 8と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) 

これらの行にエラーが発生し、問題を理解できません。 unitFlagsのタイプはスウィフト3でスウィフト2もCalendar.Component

答えて

29

まず、どちらもNSCalendarUnitを設定するために

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'

0

変更は、コンポーネントをfirstWeekdaymonthSymbolsが含まれています。

スウィフト3では、あなたのコードの相当

let unitFlags = Set<Calendar.Component>([.hour, .year, .minute]) 
var calendar = Calendar.current 
calendar.timeZone = TimeZone(identifier: "UTC")! 
let components = calendar.dateComponents(unitFlags, from: reservationDate) 
です
関連する問題