2016-07-30 9 views
1

NSDateを別の日付に変更できる拡張機能を作成しようとしています。私は自己を変える拡張をしたい。NSDate拡張機能で自己を変更する方法Swift?

私はさまざまな方法をチェックしましたが、自己を変更する方法が見つかりません 私はそれを試していますが、うまくいきません。

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

ソリューションがどのようなものです:別のファイルで

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

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

私はそのような何かをやっていますか? NSDate referenceから

答えて

3

は(強調追加):

Dateオブジェクトは不変、 ...

であり、それゆえ、あなたは拡張メソッドでselfを変異させることはできません。新しい日付を別のNSDateオブジェクトとして返品するには、 が必要です。

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

ありがとうございました。わかった。 – Danny

関連する問題