2014-07-14 5 views
22

Je reçois une erreur: "Missing argument pour le paramètre 'codeur' dans l'appel" pour le code suivant:Création d'une date future rapide avec NSDate()

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

Les docs appelle:

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

Quelqu'un peut-il voir ce qui me manque? Je ne vois pas de paramètre nommé "codeur" requis.

Répondre

48

qui semble être correct syntaxiquement 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)) 

à Swift 2.0 vous devez mettre à jour ce code un peu comme ceci:

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

Ne pas comprendre ce que signifiait l'erreur, en particulier la partie "codeur", mais votre solution a fonctionné. Gracias. – krisacorn

+0

Je ne voudrais pas être un intelligent pour dire quelque chose de malin - en ce qui concerne _Xcode6_ est encore bêta seulement - mais je suppose que le problème était le NSDate a été initié comme paramètre intégré, et le compilateur voulait appeler le NSDate (coder:) 'méthode à la place de la' NSDate() 'pour une raison quelconque. cela pourrait être la raison pour laquelle vous avez eu le message d'erreur à propos du paramètre 'coder:' manquant. – holex

+1

Mise à jour pour Swift 2.0 - changer la valeur des options à: 'NSCalendarOptions (rawValue: 0)' – leanne

12

Syntaxe pour 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

Dernières Swift 3 Syntaxe:

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