Ios 如何在NSDate扩展Swift中更改自身?

Ios 如何在NSDate扩展Swift中更改自身?,ios,swift,nsdate,swift-extensions,Ios,Swift,Nsdate,Swift Extensions,我正在尝试编写一个扩展,其中NSDate可以更改为另一个日期。我想做一个扩展来修改self 我检查了不同的方法,但找不到如何修改自我 我正在尝试类似的东西,但不起作用 extension NSDate { func changeDate(unitType: NSCalendarUnit, number: Int, date: NSDate) { self.laterDate(NSCalendar.currentCalendar().dateByAddingUnit(

我正在尝试编写一个扩展,其中NSDate可以更改为另一个日期。我想做一个扩展来修改self

我检查了不同的方法,但找不到如何修改自我 我正在尝试类似的东西,但不起作用

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

        self.laterDate(NSCalendar.currentCalendar().dateByAddingUnit(
            .Day,
            value: number,
            toDate: date,
            options: []
        )!)
    }
}
在另一个文件中,我正在做类似的事情:

let date = NSDate()
// set date to tomorrow
date.changeDate(.Day, number: 1, date: 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)