美文网首页
SwiftUI5 新增加的Observable宏的基本用法。

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

作者: liaoworkinn | 来源:发表于2023-07-04 15:53 被阅读0次

    在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

    相关文章

      网友评论

          本文标题:SwiftUI5 新增加的Observable宏的基本用法。

          本文链接:https://www.haomeiwen.com/subject/krhhudtx.html