SwiftUI5 新增加的Observable宏的基本用法。

在SwiftUI5 中推出了@Observable这个宏,用来代替之前 ObservableObject 协议配合@Published 宏来绑定模型属性和视图的功能。

在之前代码中如果想通过模型的属性来绑定视图,写法如下:

class MyModel: ObservableObject {
    @Published var text = "Hello, world!"

    var name = "liaoworking."
}

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

    var body: some View {
        Text(model.text)
        Button("Change Model") {
            model.text = "Hello, SwiftUI!"
        }
    }
}

当点击一下 Button, 文字显示就会变成 "Hello, SwiftUI!"

在SwiftUI5推出Observable宏以后,我们可以用新的写法去实现上面的需求。
具体代码如下:

// 改 ObservableObject 协议为@Observable 
@Observable class MyModel {
    // text绑定的view会自动实现监听
    var text = "Hello, world!"
    
    // 不需要监听的属性可以用ObservationIgnored宏来修饰。
    @ObservationIgnored
    var name = "liaoworking."
}

struct ContentView: View {
    // 模型前使用@State去修饰
    @State private var model = MyModel()

    var body: some View {
        Text(model.text)
        Button("Change Model") {
            model.text = "Hello, SwiftUI!"
        }
    }
}

目前该特性只支持XCode15可用, 版本支持为iOS17极以上版本。
具体官方迁移文档如下:
Migrating from the Observable Object protocol to the Observable macro

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容