如何解决onReceive方法调用的此Swift编译器错误?

克里斯托夫·范·兰德肖特

我已经使用Xcode 11.1在操场上隔离了这段代码:


import SwiftUI
import PlaygroundSupport

struct ContentView: View {
    @State var name: String = ""

    var body: some View {
        List {
            Text(String(describing: name))
            TextField("First Name", text: $name)
        }.onReceive($name) { n in
            print("hey \(n)")
        }
    }
}

let uv = ContentView()
PlaygroundPage.current.liveView = UIHostingController(rootView: uv)

除非我省略了onReceive部分,否则它将不会编译。错误消息是“无法推断闭包类型”,但是注释该方法似乎仅给我其他错误,而不是编译错误。

如何纠正此代码段?

克里斯托夫·范·兰德肖特

由于无法删除此问题,因此我将在此处自行发布答案。

我遇到的问题是我试图将a@State转换为Publisher,并且onReceive需要a Publisher(由@jfuellert指出)。在后续问题(我删除的问题)中,用户@matt@ObservedObject为我的用例指明了方向

一种简单的方法@State是利用以下事实,即状态var每次更改时,都会重新评估主体:

struct ContentView: View {
    @State var name: String = ""

    var body: some View {
        print("hey \(name)")
        return List {
            Text(String(describing: name))
            TextField("First Name", text: $name)
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何解决多定义编译器错误

如何解决此错误“方法'/'被调用为空”

编译器警告(等级2)CS0618如何解决此问题

如何解决VSCODE中链接器命令失败的编译器错误这个问题

如何解决此编译器错误“无法将表达式的类型'$ T6'转换为类型'$ T7 ??'”

如何解决 Element compilerArgs is not allowed here Maven 编译器插件中的错误?

Haskell:如何解决“类型变量不明确”的编译器错误?

Ionic 4 + FCM:如何解决编译器错误-找不到colorAccent?

如何解决 TypeScript 编译器错误“命名空间‘NodeJS’没有导出成员‘全局’”?

如何解决c ++中的每个循环编译器错误?

如何解决 SwiftUI 中的“编译器无法进行类型检查...”错误?

MSVC 是否有解决此代码的“内部编译器错误”的方法?

编译器如何解释函数调用中的冒号?

如何解决此交叉编译链接错误

如何解决此错误“在构建期间调用setState()或markNeedsBuild()”?

链式索引Scala编译器错误的解决方法?

如何解决此错误?

如何解决此错误?

广播接收器无法正常工作,不会调用onReceive()。我该如何解决?

如何解决Swift2中的此错误?

如何解决此内部服务器错误

调用泛型方法java的编译器错误

即使将编译器选项用作angular 7中的目标es6和es2017,如何解决编译时错误?

如何解决此错误VFY:无法解析虚拟方法

如何解决此错误:分段错误?

如何捕获JSON格式的Swift REPL编译器错误

调用operator <<时链接器错误,如何解决?

如何解决编译器特定的“格式中未知转换类型字符'z'”的警告?

如何解决编译器枚举重新声明冲突