无需安装在视图上即可访问 StateObject 的对象。这将每次创建一个新实例

问题描述 投票:0回答:1

我是 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()
        }
    }
 }
swiftui core-data
1个回答
0
投票

print
init()
移至
body
,例如

var body: some View {
    let _ = print("teamsListe has got \(teamsListe.count) teams")

在调用

body
并且
@FetchRequest
在内部使用
@StateObject
之前,属性包装器尚未准备好。

© www.soinside.com 2019 - 2024. All rights reserved.