我发现了很多与此相关的与SwiftUI相关的主题,但没有帮助(例如Why an ObservedObject array is not updated in my SwiftUI application?)
这不适用于Swift中的Combine(特别是使用Swift UI的not):
class SomeTask {
@Published var progress = Progress(totalUnitCount: 5) // Progress is a Class
[...]
}
var task = SomeTask()
let cancellable = task.$progress.sink { print($0.fractionCompleted) }
task.progress.completedUnitCount = 2
这与SwiftUI无关,因此没有ObservableObject
继承来获取objectWillChange
,但是即使我尝试使用ObservableObject
和task.objectWillChange.send()
也不起作用,也尝试添加extension Progress: ObservableObject {}
不会”没有帮助。由于发布者通过var的willSet
发出值,并且由于Progress
本身是类类型,所以什么也没有发生。
好像没有真正体面的方式来手动触发它?
我发现只有[[解决方案只是重新分配自身,这很尴尬:
let pr = progress
progress = pr
((写progress = progress
是编译时错误)。
[唯一可行的方法可能是使用
Key-value-observing / KVO
和/或编写新的@PublishedClassType
属性包装器] CurrentValueSubject<Progress, Never>
: