如何根据 class 中的错误在 ContentView 中显示警报
How to show alert in ContentView based on error in class
我 class 处理一些 CoreData 的东西
class GenreData: NSObject {
var genreID: Int = 0
var genreName: String = ""
@Published var isError = false
func getGenreName() -> String {
let request = NSFetchRequest<NSManagedObject>(entityName: "Genres")
request.predicate = NSPredicate(format: "genID == \(genreID)")
var genre = [NSManagedObject]()
do {
try genre = context.fetch(request)
} catch let error {
isError = true
print(error.localizedDescription)
}
return genre.first!.value(forKey: "genName") as! String
}
}
并且我想知道如何在 class 中发生错误时在我的 ContentView 中启动警报。
.alert(isPresented: $isError, content: {
Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text(alertButton1)))
})
.alert(isPresented: $objGenre.dataError, content: {
Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text(alertButton1)))
})
.alert(isPresented: $deleteAlert, content: {
Alert(title: Text(alertTitle), message: Text(alertMessage), primaryButton: .destructive(Text(alertButton1)) {
objGenre.deleteGenre()
objGenre.genreID = 0
selectedGenreName = ""
}, secondaryButton: .cancel(Text(alertButton2)))
})
我在 ContentView 中将 class 设置为 @ObservableObject objGenre 并在 class 中声明了 @Published var isError 但即使 isError 设置为 true 也不会显示警报。
你的 GenreData
class 需要符合 ObservableObject
协议,你需要在你的视图中使用 [=12] 的 属性 包装器对其进行强引用=].这将使已发布的 属性 能够更新视图状态并显示警报。如果您想了解 SwiftUI
..
中的警报,本文是一个很好的起点
https://medium.com/better-programming/alerts-in-swiftui-a714a19a547e
我 class 处理一些 CoreData 的东西
class GenreData: NSObject {
var genreID: Int = 0
var genreName: String = ""
@Published var isError = false
func getGenreName() -> String {
let request = NSFetchRequest<NSManagedObject>(entityName: "Genres")
request.predicate = NSPredicate(format: "genID == \(genreID)")
var genre = [NSManagedObject]()
do {
try genre = context.fetch(request)
} catch let error {
isError = true
print(error.localizedDescription)
}
return genre.first!.value(forKey: "genName") as! String
}
}
并且我想知道如何在 class 中发生错误时在我的 ContentView 中启动警报。
.alert(isPresented: $isError, content: {
Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text(alertButton1)))
})
.alert(isPresented: $objGenre.dataError, content: {
Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text(alertButton1)))
})
.alert(isPresented: $deleteAlert, content: {
Alert(title: Text(alertTitle), message: Text(alertMessage), primaryButton: .destructive(Text(alertButton1)) {
objGenre.deleteGenre()
objGenre.genreID = 0
selectedGenreName = ""
}, secondaryButton: .cancel(Text(alertButton2)))
})
我在 ContentView 中将 class 设置为 @ObservableObject objGenre 并在 class 中声明了 @Published var isError 但即使 isError 设置为 true 也不会显示警报。
你的 GenreData
class 需要符合 ObservableObject
协议,你需要在你的视图中使用 [=12] 的 属性 包装器对其进行强引用=].这将使已发布的 属性 能够更新视图状态并显示警报。如果您想了解 SwiftUI
..
https://medium.com/better-programming/alerts-in-swiftui-a714a19a547e