modelContext.insert 有效,但 modelContext.delete 在任何不是我的 SwiftUI 视图的视图中不会执行任何操作

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

modelContext.insert 有效,但 modelContext.delete 在不是我的内容视图的任何视图中不会执行任何操作。在我的 ContentView modelContext 中工作正常,但如果在不是我的 ContentView 的任何视图中存在 DetailReminderView(),则添加到 modelContext 工作正常,但不能删除它(没有错误消息,并且按钮正确执行其他所有操作)


//
//  ReminderDetailView.swift
//  Always Remember
//
//  Created by Friedrich Vorländer on 11.04.24.
//
import SwiftData
import SwiftUI

struct ReminderDetailView: View {
    @Environment(\.modelContext) var modelContext
    @Environment(\.dismiss) var dismiss
    @State var allReminders: [Reminder]
    var reminder: Reminder
    
    var isntAdded: Bool {
        !allReminders.contains { $0.phrase == reminder.phrase }
    }

    var body: some View {
        NavigationStack {
            ScrollView {
                VStack(alignment: .trailing){
                    ReminderView(reminder: reminder, allReminders: allReminders)
                        .frame(maxWidth: .infinity, maxHeight: 500)
                    ShareLinkView(reminder: reminder)
                }
            }
            .padding()
            .navigationTitle(reminder.author)
            .navigationBarTitleDisplayMode(.inline)
            .toolbar {
                ToolbarItem(placement: .destructiveAction) {
                    Button("Delete", systemImage: "trash", role: .destructive) {
                        modelContext.delete(reminder)
                        /*allReminders.removeAll{ $0.phrase == reminder.phrase }*/
                        print("Button Pressed")
                        dismiss()
                    }
                    .disabled(isntAdded)
                }
                ToolbarItem(placement: .confirmationAction) {
                    Button("Add to Reminder", systemImage: "plus.circle") {
                        modelContext.insert(reminder)
                        dismiss()
                    }
                    .disabled(!isntAdded)
                }
            }
        }
    }
}




我尝试从我的数组中删除从内容视图查询传递到 DetailView 的对象,但这没有帮助

swift swiftui swift-data swift-data-modelcontext
1个回答
0
投票

问题是,ExploreView 中的提醒是预设的,您可以将其添加到 modelContext 中,以便将它们放在您的个人列表中。但它总是尝试删除预设的提醒,而不是插入的正确提醒。我通过将 ExploreReminders 数组设置为静态来修复此问题,因此 UUID 保持不变。我很抱歉用所提供的材料提出这个问题

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