使用自定义的setter / getter并初始化属性以获得快速日期

时间:2015-07-31 23:21:27

标签: swift nsdate

我有一个名为Trip的类,它有一个名为NSDate的{​​{1}}属性。我的愿望是确保date属性始终将时间值设置为当天的开头。我是这样做的:

  1. 创建名为date的{​​{1}}常量,以便我可以使用NSCalendar方法重置日期值。
  2. 为调用startOfDayForDate方法的calendar属性创建自定义setter方法。
  3. 但是,我想将startOfDayForDate属性初始化为今天的开头。

    我到目前为止的代码如下所示。

    date

    此代码a)不初始化date属性,而b)(我发现)在调用setter时导致无限循环。经过进一步研究,我相信定制的getter / setter 严格计算,对吗?

    我如何完成我之前提到的内容:

    a。)确保date属性的设置重置为当天的开头

    b。)将class Trip { private let calendar: NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! var date: NSDate { get { return self.date } set { self.date = calendar.startOfDayForDate(newValue) } } } 属性初始化为今天的开始日期?

1 个答案:

答案 0 :(得分:1)

我想你想要一个永远是约会开始日期的日期。用以下内容替换当前的date变量:

private var privateDate = NSDate()
var date: NSDate {
    get {
        return privateDate
    }
    set {
        privateDate = calendar.startOfDayForDate(newValue)
    }
}

可能有一种更好的方法可以做到这一点,但我猜你的应用程序不会有数以万计的Trip类,所以你应该没问题。