swift - 如何在 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!
}
}
解决方案
推荐阅读
- jquery - 使用 Django 将本地存储数组保存在数据库中
- git - 如何在缩写中使用鱼壳函数?
- android - 来自不同cordova插件的Android支持库类编译错误
- ios - iOS 13 照片内容在保存期间被清除
- c++ - dll 链接静态库 - 未使用函数中未解析的链接器符号
- mysql - 如何用 +1 班次为两个原始数据减法创建一个新列
- visual-studio-code - Prettier 不在 VS Code 中格式化 HTML 文件
- r - 如何将自定义文本添加到 R 中的四重图?
- spring - Spring:限定具有相同名称的不同类型
- python - 如何使用 pipreqs 创建 requirements.txt 文件