如何为 NSManagedObject 添加一个 @Published 属性

发布
更新
字数 96
阅读 1 分钟
阅读量 593

NSManagedObject 已经是 ObservableObject ,可以在 SwiftUI 中直接绑定属性,如:

TextField("Name", text: $item.name)

如果我们要根据已有的属性合成一个新的 @Published 属性,可以使用以下方法:

@Published var time: Date = .now {
    didSet {
        let calendar = Calendar.current
        self.hour = calendar.component(.hour, from: time)
        self.minute = calendar.component(.minute, from: time)
    }
}

// ...
override func awakeFromFetch() {
    time = DateComponents(calendar: .current, hour: self.hour, minute: self.minute).date!
}