实战需求
SwiftUI ObservedObject如何转换为Binding
基础知识
ObservableObject
具有发布者的一种对象,该对象在更改对象之前发出。
protocol ObservableObject : AnyObject
总览
默认情况下,合成器将在其任何属性更改之前发出更改后的值的发布程序。
class Contact: ObservableObject {
@Published var name: String
@Published var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func haveBirthday() -> Int {
age += 1
return age
}
}
let john = Contact(name: "John Appleseed", age: 24)
cancellable = john.objectWillChange
.sink { _ in
print("\(john.age) will change")
}
print(john.haveBirthday())
// Prints "24 will change"
// Prints "25"
实战代码
struct ContentView: View {
@StateObject var dataModel = DataModel()
var body: some View {
DataView(dataModel: dataModel)
}
}
struct DataView: View {
@ObservedObject var dataModel: DataModel
var body: some View {
Text(dataModel.data)
.padding()
}
}
加入我们一起学习SwiftUI
QQ:3365059189
SwiftUI技术交流QQ群:518696470