【发布时间】:2020-10-25 17:43:22
【问题描述】:
我刚开始使用 SwiftUI。我经常混淆声明式编程和命令式编程之间的区别。
控制台日志显示错误:
ForEach
计数 (2) != 其初始计数 (1)。 ForEach(_:content:)应该只用于 constant 数据。反而 使数据符合Identifiable或使用ForEach(_:id:content:)和 提供明确的id!
为什么?如何动态更新列表?SwiftUI如何处理数据源?
struct TestView: View {
@State var n = 1
var body: some View {
VStack {
Button.init("update") {
self.n += 1
}
AView.init(n: n)
}
}
}
struct AView: View {
let n: Int
var body: some View {
List {
ForEach(0..<n) { i in
Text.init(String(i))
}
}
}
}
【问题讨论】: