Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
401 views
in Technique[技术] by (71.8m points)

core data - How do you update a TabView in SwiftUI when the CoreData is modified?

I am trying to modify the underlying CoreData for a TabView in SwiftUI and have that reflected when a user creates or deletes data, but the view never gets "redrawn" Here is what I have so far:

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))
}

For the UserProfileView I have:

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)")
        }
    }

When I use the delete button the user is deleted but the TabView in the AddUserView is not redrawn/updated. How do I recall the "fetch" request to update the data set?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...