2016-08-12 7 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) 

Xcode는이 줄에 오류를 나타내며이 문제를 이해할 수 없습니다. 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) 
입니다
관련 문제