Как вы обновляете TabView в SwiftUI при изменении CoreData?

#core-data #swiftui

#основные данные #свифтуи

Вопрос:

Я пытаюсь изменить базовые CoreData для TabView в SwiftUI, и это отражается, когда пользователь создает или удаляет данные, но представление никогда не «перерисовывается», вот что у меня есть до сих пор:

 struct AddUserView: View {

@State var showingAddNewUser = false
@Environment(.managedObjectContext) var managedObjectContext
@FetchRequest(
    entity: Users.entity(),
    sortDescriptors: [
        NSSortDescriptor(keyPath: User.fName, ascending: true)
    ]
) var fetchedUsers: FetchedResults<Users>

var body: some View {
    TabView{
        if(fetchedUsers.count > 0){
            ForEach(fetchedUsers) { user in
                UserProfileView(showingAddNewUser: showingAddNewUser, user: user, managedObjectContext: _managedObjectContext)
            }
            AddUserView(showingAddNewuser: false)
        } else{
            AddUserView(showingAddNewuser: false)
        }
        
    }.frame(width: UIScreen.main.bounds.width, height: 400)
    .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
}
 

Для UserProfileView у меня есть:

 struct UserProfileView: View {
@State var showingAddNewUser = false
@ObservedObject var user: Users
@Environment(.managedObjectContext) var managedObjectContext

    var body: some View {
the body of my user profile view.. Essentially some Text views to display user info along with a delete button

after editing the context is saved here 


 private func saveContext() {   
        do {
            try managedObjectContext.save()
        } catch {
            print("Error saving managed object context: (error)")
        }
    }
 

Когда я использую кнопку удаления, пользователь удаляется, но TabView в AddUserView не перерисовывается / не обновляется. Как мне вызвать запрос «выборка» для обновления набора данных?

Комментарии:

1. Вам нужно сохранять managedObjectContext после каждой манипуляции.

2. Привет, Коен — я делаю (я просто оставил это для краткости) Я добавил это в свой первоначальный вопрос, вот функция сохранения: private func saveContext() { do { try managedObjectContext.save() } catch { print(«Ошибка сохранения контекста управляемого объекта: (ошибка)») } }

3. Когда вы звоните saveContext , я не вижу этого в вашем коде.