2016-07-30 9 views
1

Ich versuche, eine Erweiterung zu schreiben, wo NSDate zu einem anderen Datum geändert werden kann. Ich möchte eine Erweiterung machen, die das Selbst verändern wird.So ändern Sie Self in NSDate Erweiterung Swift?

Ich habe verschiedene Methoden überprüfen, kann aber nicht finden, wie man selbst Ich versuche so etwas, aber es funktioniert nicht.

extension NSDate { 
    func changeDate(unitType: NSCalendarUnit, number: Int, date: NSDate) { 

     self.laterDate(NSCalendar.currentCalendar().dateByAddingUnit(
      .Day, 
      value: number, 
      toDate: date, 
      options: [] 
     )!) 
    } 
} 

In einer anderen Datei, die ich so etwas tue:

let date = NSDate() 
// set date to tomorrow 
date.changeDate(.Day, number: 1, date: date) 

Was ist die Lösung?

Antwort

3

Von NSDate reference (Hervorhebung hinzugefügt):

Date-Objekte sind unveränderlich, ...

und daher können Sie nicht self in einer Erweiterungsmethode mutieren. Sie haben , um das neue Datum als ein anderes NSDate Objekt, z.

extension NSDate { 

    func changedDate(unitType: NSCalendarUnit, number: Int) -> NSDate { 
     return self.laterDate(NSCalendar.currentCalendar().dateByAddingUnit(
      .Day, 
      value: number, 
      toDate: self, 
      options: [] 
      )!) 
    } 
} 

var date = NSDate() 
date = date.changedDate(.Day, number: 1) 
+0

Danke. Ich verstehe es. – Danny

Verwandte Themen