将 init 和 didSet 与 NSManaged 对象一起使用

Using init and didSet with NSManaged objects

我有以下class,对象是使用CoreData存储的

extension CDate{

  @nonobjc public class func fetchRequest() -> NSFetchRequest<CDate> {
      return NSFetchRequest<CDate>(entityName: "CDate")
  }

  @NSManaged public var day: Int
  @NSManaged public var month: Int

}

我需要添加一个 属性 ,每次其他属性发生变化时都会更新此属性:

  var date:DateComponent

这个 属性 需要在创建 CDate 对象时初始化。在常规 class 中,我会使用 init 构造函数初始化对象,并在月份和日期使用 didSet{} 来更新日期 属性 每当更新月份和日期属性时。

当它没有 init 和 didSet{} 时,我如何在这个 class 中实现它?

一个简单的解决方案是在 CDate 中创建一个 computed-property,其值将在执行期间计算,并在任何时间点获得更新值。

extension CDate {
    var date: Date { 
        // compute the date and return here.
    }
}