首页 > 解决方案 > 如何在 SwiftUI 中自动重新加载视图

问题描述

每次用户在设置中更改/更新他们的个人资料信息时,我都希望重新加载视图,然后将这些信息存储在 CoreData 中。例如,我有三个视图使用已存储的 CoreData 信息。但是,它们不会在更改后自动刷新。拉动刷新实际上是我正在寻找的最后一个解决方案,但我想要类似于 Apple App Store 的东西,因为它的视图似乎在给定的时间间隔或用户启动应用程序时刷新。我怎么能做到这一点?(他们不使用拉来刷新)

这就是我所拥有的

类 updateHome: ObservableObject {

@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Account.userID, ascending: true)],predicate: NSPredicate(format: "userID == %@", Auth.auth().currentUser!.uid), animation: .default) private var savedAccounts: FetchedResults<Account>
@State private var currentAccount: Account?

@State var showAlert = false
@State var alertMessage = ""
@State var alertTitle = ""



func reloadview() {
    
    
    currentAccount = savedAccounts.first
    
    if currentAccount == nil {
    let userDataToSave = Account (context: viewContext)
        userDataToSave.firstname = Auth.auth().currentUser!.displayName
        userDataToSave.lastname = Auth.auth().currentUser!.displayName
        userDataToSave.userID = Auth.auth().currentUser!.uid

userDataToSave.profileImage = nil

        do {
            
            try viewContext.save()
            
        } catch let error {
            
            alertTitle = "Uh-Oh!"
             alertMessage = error.localizedDescription
             showAlert.toggle()
         }
    
}
    
}

}

如果尝试在 homeview 上运行此代码,我会崩溃

            .onAppear() {
                
                currentAccount = savedAccounts.first!
        
            }
        }

标签: swiftcore-dataswiftui

解决方案


推荐阅读