【发布时间】:2023-06-29 14:42:02
【问题描述】:
我有一个名为Trip 的类,它有一个名为date 的NSDate 属性。我的愿望是确保date 属性始终将时间值设置为一天的开始。我这样做:
- 创建一个名为
calendar的NSCalendar常量,以便我可以使用startOfDayForDate方法重置日期值。 - 为调用 startOfDayForDate 方法的
date属性创建自定义设置方法。
但是,我想将date 属性初始化为今天的开始日期。
我目前的代码如下所示。
class Trip {
private let calendar: NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
var date: NSDate {
get {
return self.date
}
set {
self.date = calendar.startOfDayForDate(newValue)
}
}
}
这段代码 a) 没有初始化 date 属性,b)(我发现)在调用 setter 时会导致无限循环。经过进一步研究,我相信自定义的 getter/setter 是严格计算的,对吧?
我如何完成我前面提到的:
a.) 确保设置为 date 属性重置为一天的开始和
b.) 将date 属性初始化为今天的开始日期?
【问题讨论】:
-
当你说一天的开始时,你是什么意思?您希望它返回今天的开始还是日历的开始?
-
我希望我的日期时间一致,以确保正确的日期比较。因此,我指的是一天的开始(即零小时、零分钟、零秒)。我的理解是“startOfDateForDate”方法将提供这一点。