我有一个名为Trip的类,该类具有一个名为NSDatedate属性。我的愿望是确保date属性始终将时间值设置为一天的开始。我这样做是:


创建一个名为NSCalendarcalendar常量,以便我可以使用startOfDayForDate方法重置日期值。
date属性创建自定义的setter方法,该方法调用startOfDayForDate方法。


但是,我想将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时导致无限循环。经过进一步的研究,我相信对定制的吸气剂/定型器进行了严格的计算,对吗?

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

a。)确保将设置为date的属性重置为一天的开始,然后

b。)初始化date属性到今天的开始?

最佳答案

我认为您希望有一个始终是该日期开始的日期。将此替换为当前的date变量:

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


也许有一种更好的方法,但是我猜您的应用程序不会有成千上万的Trip类,因此您应该没问题。

关于swift - 使用自定义的setter/getter并初始化属性,以便快速日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31756581/

10-14 20:33
查看更多