Skip to content

使用 @Observable 宏简化模型

使用 @Observable 宏简化模型,让数据管理变得前所未有的简单!🚀 你不再需要手动编写 ObservableObject 协议和 @Published 属性,只需一个宏,就能搞定一切!

告别繁琐:拥抱 @Observable

以前,我们需要这样定义可观察对象:

swift
class MyModel: ObservableObject {
    @Published var name: String = ""
    @Published var age: Int = 0
}

现在,有了 @Observable,代码变得简洁多了:

swift
import Observation

@Observable
class MyModel {
    var name: String = ""
    var age: Int = 0
}

是不是清爽了很多?🎉 @Observable 宏会自动为你处理所有必要的设置,让你可以专注于业务逻辑。

@Observable 的优势

  • 代码更简洁:大幅减少样板代码,提高开发效率。
  • 易于维护:代码更易读,方便维护和调试。
  • 性能优化:Observation 框架底层进行了优化,性能更佳。

如何使用 @Observable

  1. 导入 Observation 框架import Observation
  2. 在类前添加 @Observable@Observable class MyModel { ... }
  3. 直接使用属性:在 SwiftUI 视图中,像普通属性一样使用即可。

例如:

swift
import SwiftUI
import Observation

@Observable
class MyModel {
    var name: String = "张三"
    var age: Int = 20
}

struct ContentView: View {
    @State var model = MyModel()

    var body: some View {
        VStack {
            Text("姓名:\(model.name)")
            Text("年龄:\(model.age)")
            TextField("姓名", text: $model.name)
            Stepper("年龄", value: $model.age, in: 0...100)
        }
        .padding()
    }
}

在这个例子中,ContentView 通过 @State 创建了一个 MyModel 的实例。当 nameage 发生变化时,视图会自动更新。是不是很方便?😎

注意事项

  • @Observable 只能用于类。
  • 确保导入了 Observation 框架。
  • 在 SwiftUI 视图中使用 @State@ObservedObject 来持有 @Observable 对象。

使用 @Observable 宏,可以极大地简化你的 SwiftUI 数据模型,让你更专注于构建出色的用户界面。快来试试吧!👍

本站使用 VitePress 制作