SwiftUI前提条件失败:属性无法设置初始值

SwiftUI前提条件失败:属性无法设置初始值,swift,core-data,swiftui,swiftui-environment,Swift,Core Data,Swiftui,Swiftui Environment,我在SwiftUI中有两个页面,可以使用tabView切换,一个是ProjectPage,另一个是HabitPage。在ProjectPage中,可以显示项目列表。在HabitPage中,可以显示习惯列表。新习惯也可以添加到此页面中。所有项目和习惯都将存储在核心数据中。项目与任务有关系,任务与项目有关系。在我养成新习惯并切换到项目页面后,程序将崩溃 输出 2020-01-14 14:03:51.156969+1100 Demo9R[35096:12471800] precondition fai

我在SwiftUI中有两个页面,可以使用tabView切换,一个是ProjectPage,另一个是HabitPage。在ProjectPage中,可以显示项目列表。在HabitPage中,可以显示习惯列表。新习惯也可以添加到此页面中。所有项目和习惯都将存储在核心数据中。项目与任务有关系,任务与项目有关系。在我养成新习惯并切换到项目页面后,程序将崩溃

输出

2020-01-14 14:03:51.156969+1100 Demo9R[35096:12471800] precondition failure: attribute failed to set an initial value: 74
我的部分代码:

struct ProjectView: View {
@Environment(\.managedObjectContext) var managedObjectContext

@FetchRequest(entity: Project.entity(), sortDescriptors: []) var projects: FetchedResults<Project>

@State var popAddProject: Bool = false

var body: some View {
    ZStack {
        NavigationView {
            List {
                ForEach(projects, id: \.self) { project in
                    NavigationLink(destination: ProjectProfile(project: project).environment(\.managedObjectContext, self.managedObjectContext)) {
                        ProjectCard(name: project.wrappedName, tasks: project.tasksName)
                    }
                }
            }
            .navigationBarTitle("Project")
        }

        PlusButton() {
            self.popAddProject.toggle()
        }

        if self.popAddProject {
            MiddleLayer(ifDisapper: self.$popAddProject)

            AddProjectView(ifAppear: self.$popAddProject)
                .background(Color.white)
                .shadow(radius: 16)
                .cornerRadius(12.0)
                .padding()
                .environment(\.managedObjectContext, managedObjectContext)

        }
    }
}
}


谁能告诉我为什么?我已经尝试了很长时间

原因不在提供的代码中。。。其他地方。@Asperi非常感谢您的回复,我发现问题是由ProjectPage中的@Environment(\.managedObjectContext)var managedObjectContext引起的,因为它只在habitPage中更新,但我不知道如何修复it@Asperi我试图注释掉@Environment(\.managedObjectContext)var managedObjectContext,它能帮你找到解决问题的方法吗?@cesurbağcı是的,这是HabitView的Picker提出的问题。我换了选择器,然后问题就解决了。
struct HabitView: View {
@Environment(\.managedObjectContext) var managedObjectContext

@FetchRequest(entity: Habit.entity(), sortDescriptors: []) var habits: FetchedResults<Habit>
@FetchRequest(entity: Task.entity(), sortDescriptors: []) var tasks: FetchedResults<Task>

@State var popAddHabit = false

var body: some View {
    ZStack {
        NavigationView {
            List {
                ForEach(self.habits, id: \.self) { habit in
                    HabitCard(habit: habit)
                }
            }
            .navigationBarTitle("Habits")
        }

        PlusButton {
            self.popAddHabit.toggle()
        }
        .disabled(self.tasks.count == 0)

        if self.popAddHabit {
            MiddleLayer(ifDisapper: self.$popAddHabit)

            AddHabitView(ifAppear: self.$popAddHabit)
        }
    }
}
struct ContentView: View {
@State private var selection = 0

var body: some View {
    TabView(selection: $selection){
        ProjectView()
            .font(.title)
            .tabItem {
                VStack {
                    Image("first")
                    Text("Project")
                }
            }
            .tag(2)
        HabitView()
            .font(.title)
            .tabItem {
                VStack {
                    Image("second")
                    Text("Second")
                }
            }
            .tag(1)
        TodayView()
            .font(.title)
            .tabItem {
                VStack {
                    Text("Third")
                }
            }
            .tag(0)
    }
    .edgesIgnoringSafeArea(.top)
}