ios - 如何在 NSDate 扩展 Swift 中改变 self ?

标签 ios swift nsdate swift-extensions

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

我已经检查了不同的方法,但找不到如何修改 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)

解决方案是什么?

最佳答案

来自 NSDate reference (强调):

Date objects are immutable, ...

因此你不能改变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)

关于ios - 如何在 NSDate 扩展 Swift 中改变 self ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38674857/

相关文章:

ios - #define 在 Objective-C 的头文件中

ios - 如何使用 iOS 图表库在底部轴上创建带有日期/时间的图表?

Swift 和 iso8601 尝试解析 "HH:mm:ss"

ios - 当数组元素之一是标志表情符号时,String.join 会卡住

ios - Xcode 界面构建器未检测到 Admob 框架类

ios - dateFromString 返回 nil

ios - 设置回原来的ui布局约束——放大动画

ios - Appium:Ruby:使用 appium for iOS 进行分布式测试

ios - 获取昨天的 NSDate 开始和结束

ios - 如何从日期时间格式检索 NSDate?