2014-07-14 16 views
22

sto ottenendo un errore: "argomento per il parametro 'coder' in call Missing" per il seguente codice:Creazione di una data futura a Swift con NSDate()

var components = NSDateComponents()  
components.setValue(1,forComponent: NSCalendarUnit.CalendarUnitMonth); 
var expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components,  toDate: NSDate(),options:0) 

La documentazione prevede:

NSCalendar.currentCalendar().dateByAddingComponents(<#comps: NSDateComponents?#>, toDate: <#NSDate?#>, options: <#NSCalendarOptions#>) 

Qualcuno può vedere cosa mi manca? Non vedo un parametro chiamato 'coder' richiesto.

risposta

48

che sembra essere corretto sintatticamente in Swift 1.2:

var components = NSDateComponents() 
components.setValue(1, forComponent: NSCalendarUnit.CalendarUnitMonth); 
let date: NSDate = NSDate() 
var expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: date, options: NSCalendarOptions(0)) 

in Swift 2.0 è necessario aggiornare il codice un po 'come questo:

let components: NSDateComponents = NSDateComponents() 
components.setValue(1, forComponent: NSCalendarUnit.Month); 
let date: NSDate = NSDate() 
let expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: date, options: NSCalendarOptions(rawValue: 0)) 
+0

non capiscono che cosa significa l'errore, soprattutto la parte "coder", ma il fix funzionato. Gracias. – krisacorn

+0

Non vorrei essere un furbo per dire qualcosa di intelligente - per quanto riguarda _Xcode6_ è ancora solo beta - ma presumo che il problema fosse che "NSDate" era stato inserito come parametro incorporato, e il compilatore voleva chiamare "NSDate" (coder:) 'metodo per esso al posto di' NSDate() 'per qualche ragione. questo potrebbe essere il motivo per cui hai avuto il messaggio di errore sul parametro mancante 'coder:'. Aggiornamento – holex

+1

per Swift 2.0 - cambia il valore delle opzioni in: 'NSCalendarOptions (rawValue: 0)' – leanne

12

Sintassi per Swift 3

var components = DateComponents() 
components.setValue(1, forComponent: .month) 
let date: Date = Date() 
let expirationDate = Calendar.current.date(byAdding: components, to: date, options: []) 
5

Ultime Swift 3 sintassi:

var components = DateComponents() 
components.setValue(1, for: .month) 
let date: Date = Date() 
let expirationDate = Calendar.current.date(byAdding: components, to: date) 
Problemi correlati