web-dev-qa-db-fra.com

Swift 2.0

Salut, je reçois cette erreur dans Swift 2.0

Impossible d'appeler des 'composants' avec une liste d'arguments de type '(NSCalendarUnit, fromDate: NSDate ?, toDate: NSDate ?, options: nil)'

var hoy = dataFormatter.stringFromDate(NSDate())
        var despues = dataFormatter.stringFromDate(fecha)
        var calHoy = dataFormatter.dateFromString(hoy)
        var calcDesp = dataFormatter.dateFromString(despues)
        let cal = NSCalendar.currentCalendar()
        let unit:NSCalendarUnit = .Day
        let components = cal.components(unit, fromDate: calcDesp, toDate: calHoy, options: nil) 
24
Boss

Au Swift 2, NS_OPTIONS (comme NSCalendarOptions) sont mappés à Swift en tant que OptionSetType qui offre une interface de type ensemble. En particulier, "aucune option" ne peut désormais être spécifié comme [] au lieu de nil:

let components = cal.components(unit, fromDate: calcDesp!, toDate: calHoy!,
                               options: []) 

Voir aussi Swift 2.0 - L'opérateur binaire "|" ne peut pas être appliqué à deux opérandes UIUserNotificationType et les réponses récemment ajoutées à Comment créer des énumérations de masques de bits de style NS_OPTIONS dans Swift? pour plus information.

49
Martin R

vous pouvez également utiliser rawValue comme suit:

cal.components(unit, fromDate: calcDesp!, toDate: calHoy!, options: NSCalendarOptions(rawValue: 0))

1
Bobj-C

Vous ne pouvez pas passer à zéro comme argument d'options. Utilisez un ensemble d'options vide à la place:

let components = cal.components(unit, fromDate: calcDesp!, toDate: calHoy!, options: [])

Vous devez également vous assurer de déballer calcDesp et calHoy.

1
Connor