被管理对象(ManagedObject)和被观察对象(ObservedObject)是SwiftUI中的两个重要概念,用于实现视图和数据的双向绑定。下面是一个简单的代码示例,展示了如何创建和使用这两种对象。
被管理对象(ManagedObject)示例代码:
import SwiftUI
class UserData: ObservableObject {
@Published var name = "John Doe"
@Published var age = 30
}
struct ContentView: View {
@ObservedObject var userData = UserData()
var body: some View {
VStack {
Text("Name: \(userData.name)")
Text("Age: \(userData.age)")
Button(action: {
self.userData.name = "Jane Smith"
self.userData.age = 25
}) {
Text("Update")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在上面的示例中,我们创建了一个名为UserData
的被管理对象(ManagedObject),其中包含了一个name
和age
属性。这两个属性都用@Published
属性包装器进行了修饰,以便当属性的值发生变化时,能够自动通知相关的视图更新。
在视图ContentView
中,我们使用@ObservedObject
属性包装器将userData
对象声明为被观察对象(ObservedObject)。这样,当userData
对象的属性发生变化时,视图会自动更新。
在视图的body
属性中,我们使用Text
视图来显示userData
对象的name
和age
属性的值,并使用Button
视图来更新这些属性的值。
通过运行上面的代码,您将看到一个界面,显示了初始的name
和age
属性的值,以及一个按钮。当按钮被点击时,name
和age
属性的值会被更新,并且界面上的文本会相应地更新。这就是被管理对象(ManagedObject)和被观察对象(ObservedObject)的基本用法。