我是 SwiftUI 和 Core Data 的新手。我构建了一个工作正常的视图。在此视图中,我可以列出我的团队,当我添加团队时,它会显示在列表中。但我收到以下错误: 访问未安装在视图上的 StateObject 对象。这将每次创建一个新实例。
我在这里找到了很多帖子,我尝试解决这个问题,但每次解决这个问题时,我都会收到另一个错误,或者添加的团队没有出现在列表中。在我看来,这个问题是否存在一个简单的解决方案?
这里是视图的代码:
import SwiftUI
import CoreData
struct View_Teams: View {
@Environment(\.managedObjectContext) var viewContext
@FetchRequest(sortDescriptors: []) var teamsListe: FetchedResults<Team>
init() {
print("teamsListe has got \(teamsListe.count) teams")
}
var body: some View {
List {
ForEach(teamsListe) { team in
NavigationLink(destination: View_TeamsDetail(passedTeam: team)) {
Text(team.bezeichnung ?? "Error")
}
}.onDelete(perform: deleteTeam)
}.navigationTitle("Teams")
NavigationLink(destination: View_TeamsDetail(passedTeam: nil)) {
Text("add team")
}
}
private func deleteTeam(offsets: IndexSet) {
withAnimation {
offsets.map { teamsListe[$0] }
.forEach(DataController.shared.context.delete)
DataController.shared.save()
}
}
}
将
print
从 init()
移至 body
,例如
var body: some View {
let _ = print("teamsListe has got \(teamsListe.count) teams")
在调用
body
并且 @FetchRequest
在内部使用 @StateObject
之前,属性包装器尚未准备好。