如何在 NSDate 扩展 Swift 中更改自己?
How to change self in NSDate extension Swift?
我正在尝试编写一个可以将 NSDate 更改为另一个日期的扩展。我想做一个扩展来修改自己。
我已经检查了不同的方法,但找不到如何修改自己
我正在尝试类似的方法,但它不起作用。
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
。你会有
return 新日期作为另一个 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)
我正在尝试编写一个可以将 NSDate 更改为另一个日期的扩展。我想做一个扩展来修改自己。
我已经检查了不同的方法,但找不到如何修改自己 我正在尝试类似的方法,但它不起作用。
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
。你会有
return 新日期作为另一个 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)