swift - 如何修复 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 部分,否则这不会编译。错误消息是“无法推断闭包类型”,但注释该方法似乎只给了我其他错误,而不是编译的东西。
如何更正此代码段?
解决方案
该onReceive
函数采用 Publisher 类型,因此您必须更改$name
为name.publisher
.
var body: some View {
List {
Text(String(describing: name))
TextField("First Name", text: $name)
}.onReceive(name.publisher) { n in
print("hey \(n)")
}
}
推荐阅读
- javascript - 手动调用 React render() 函数?
- c++ - 使用 ffmpeg 以编程方式读取 fMP4
- java - 如何将 System.currentMillisSeconds 转换为 TemporalAccessor
- powershell - 验证安装期间提供的用户凭据(预安装)
- docker - 如何修复mysql错误日志中的“mbind:不允许操作”
- c++ - 如果一个为高,则将字节中的所有位设置为高
- javascript - 输入高尔夫分数和相关计算时如何指定表格行
- mysql - 如何根据聚合函数的结果更新属性
- javascript - 如果满足条件,则在另一个转换期间添加一个并发转换
- r - 在 R 中使用 rpart() 时使用的实际字符 (0)