尝试一下那里的例子。找到一个项目,其中有一个类bindableobject
并且它没有给出任何错误。现在 Xcode 11 beta 4 已经发布,我收到错误:
类型“UserSettings”不符合协议“BindableObject”
它有一个错误修复按钮,当您单击该按钮时,它会添加
typealias PublisherType = <#type#>
它希望您填写类型。
类型会是什么?
class UserSettings: BindableObject {
let didChange = PassthroughSubject<Void, Never>()
var score: Int = 0 {
didSet {
didChange.send()
}
}
}
Beta 4 发行说明 https://developer.apple.com/documentation/macos_release_notes/macos_catalina_10_15_beta_4_release_notes say:
BindableObject 协议的要求现在是 willChange 而不是
didChange,现在应该在对象更改之前发送
比改变之后。此更改允许改进合并
更改通知。 (51580731)
您需要将代码更改为:
class UserSettings: BindableObject {
let willChange = PassthroughSubject<Void, Never>()
var score: Int = 0 {
willSet {
willChange.send()
}
}
}
In Beta 5 https://developer.apple.com/documentation/ios_ipados_release_notes/ios_ipados_13_beta_5_release_notes?language=objc他们再次改变它。这次他们一起弃用了 BindableObject!
BindableObject 被 ObservableObject 协议取代
结合框架。 (50800624)
您可以通过定义一个来手动遵守 ObservableObject
在对象更改之前发出的 objectWillChange 发布者。
然而,默认情况下,ObservableObject会自动合成
objectWillChange 并在任何 @Published 属性更改之前发出。
@ObjectBinding 被@ObservedObject 取代。
class UserSettings: ObservableObject {
@Published var score: Int = 0
}
struct MyView: View {
@ObservedObject var settings: UserSettings
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)