我有一个 NSManagedObject 的子类Folder
,其状态为Availability
@objc enum Availability: Int16 {
case unknown
case available
case unavailable
}
每当可用性发生变化时,文件夹都必须做额外的事情(例如删除相关文件)。所以我有
internalAvailability
保存在核心数据中availability
使用上述属性计算的属性
`
extension Folder {
@NSManaged private var internalAvailability: Availability
}
extension Folder {
private func deleteFiles(...) {
...
}
@objc dynamic public var availability: Availability {
get {
return internalAvailability
}
set {
willChangeValue(forKey: "availability")
deleteFiles()
internalAvailability = newValue
didChangeValue(forKey: "availability")
}
}
}
使用 Reactive,我想根据可用性更改导航项的标题,但信号永远不会被调用一次!
```
let property = DynamicProperty<NSNumber>(object: folder, keyPath: "availability")
internalVariable = property // To have a reference of property
navigationItem.reactive.title <~ property.map { (stateNumber) -> String in
guard let a = Availability(rawValue: stateNumber.int16Value) else {
assertionFailure()
return ""
}
let prefix = a == .available ? "" : "(Nope) "
return "\(prefix)\(folder.name)"
}
我已明确将 KVO 合规性添加到该属性中,希望这可以开始工作,但遗憾的是没有结果。
编辑:如果我创建DynamicProperty
oninternalAvailability
而不是availability
,一切顺利..