J'ai implémenté mon projet de surveillance dans Swift et maintenant je migre vers Swift 3 à cause de Xcode 8. Je laisse Xcode 8 changer le code source en Swift 3. Cependant, le code contient des erreurs et je ne parviens pas à le comprendre.
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 donne une erreur dans ces lignes et je ne peux pas comprendre le problème.
ERREUR: le type contextuel 'Calendrier' ne peut pas être utilisé avec un littéral de tableau
ERREUR: Les étiquettes d'argument '(identifiant :)' ne correspondent à aucune donnée disponible surcharges
ERREUR: impossible de convertir la valeur de type 'Calendrier' en argument attendu tapez 'NSCalendar.Unit'
Tout d’abord, ni NSCalendarUnit
dans Swift 2 ni Calendar.Component
dans Swift 3 ne contiennent les composants firstWeekday
et monthSymbols
.
Dans Swift 3, l'équivalent de votre code est
let unitFlags = Set<Calendar.Component>([.hour, .year, .minute])
var calendar = Calendar.current
calendar.timeZone = TimeZone(identifier: "UTC")!
let components = calendar.dateComponents(unitFlags, from: reservationDate)
Changer le type de unitFlags en Set