SwiftUI:从ObservableObject读取数据



我是SwiftUI的新手,创建了一个Todo模型。然后我有一个代表容器的类,这样我以后就可以在上面有一个Todos和方法的数组。我把TodoContainer变成了ObservableObject,然后在实例化它之后观察它:@ObservedObject var items = TodoContainer()
我正在遍历列表,并期望在任何时候单击按钮,它不应该出现在列表中吗?因为它每次都在创建一个新的Todo,并且allTodos应该具有所有Todo的数组?

import SwiftUI
struct Todo: Identifiable {
var id = UUID()
var name: String;
var priority: Int;
}
class TodoContainer: ObservableObject {
@Published var allTodos = [Todo]();
}

struct ContentView: View {
@ObservedObject var items = TodoContainer()

var body: some View {
Button("Create New") {
Todo(name: "New one", priority: Int.random(in: 1..<100))
}
List(items.allTodos, id: .id){item in
Text(item.name)
}
}
}

您需要将创建的todo添加到视图模型的allTodos中。Xcode之前可能向您显示了一个关于未使用表达式的错误。

import SwiftUI
struct Todo: Identifiable {
var id = UUID()
var name: String;
var priority: Int;
}
class TodoContainer: ObservableObject {
@Published var allTodos = [Todo]();
}
struct ContentView: View {
@ObservedObject var items = TodoContainer()

var body: some View {
Button("Create New") {
let todo = Todo(name: "New one", priority: Int.random(in: 1..<100))
items.allTodos.append(todo) // here
}
List(items.allTodos, id: .id){item in
Text(item.name)
}
}
}

最新更新