4

我想将“didSet”函数添加到 SwiftUI 的 View 结构的参数中,但每次我尝试构建应用程序时都会收到“Segmentation fault: 11”错误。

我试图重命名参数,但什么也没发生。我也尝试将其设为可选,但因为它是 @State 它没有用。我能做些什么?

@State var text: String {
    didSet {
        print(oldValue, text)
    }
}
4

2 回答 2

3

尝试为您的 var 添加一个默认值,这在定义@Statevar 时是必需的。

@State var text: String = "" {
    didSet {
        print(oldValue, text)
    }
}
于 2019-06-21T20:17:00.503 回答
1

我也有这个问题,好像是编译器错误之类的。我做了一些挖掘,发现了一个由 Apple 提出的错误,可以在这里找到https://bugs.swift.org/browse/SR-10918

除了didSet在带有@State属性包装器的变量上使用之外,您还可以拥有一个符合BindableObject(部分Combine)的视图模型并@ObjectBinding在您的视图中使用,因此当您的视图模型中的任何内容更新时,SwiftUI 将更新您的 UI

这是一个很好的教程,关于如何做到这一点......

https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-objectbinding-to-create-object-bindings

于 2019-06-20T20:53:39.573 回答