2015-06-11 8 views
22

Hi ottengo questo errore in rapida 2.0Swift componenti di calendario 2.0 errore

non può invocare 'componenti' con una lista di argomenti di tipo '(NSCalendarUnit, fromdate: NSDate ?, TODATE: NSDate ?, opzioni: zero)'

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) 

risposta

49

al Swift 2, NS_OPTIONS (come NSCalendarOptions) vengono mappati a Swift come OptionSetType che offre un'interfaccia set-like. In particolare, "nessuna opzione" ora possono essere specificati come [] invece di nil:

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

Vedi anche Swift 2.0 - Binary Operator "|" cannot be applied to two UIUserNotificationType operands e le risposte aggiunte di recente a How to create NS_OPTIONS-style bitmask enumerations in Swift? per maggiori informazioni.

+0

Grazie molto !! – Boss

1

Non è possibile passare nil come argomento delle opzioni. Utilizzare invece un set di opzioni vuoto:

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

È inoltre necessario assicurarsi di scartare calcDesp e calHoy.

1

è anche possibile utilizzare rawValue come la seguente:

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