我在某些视图中有一个按钮,它调用 ViewModel 中可能引发错误的函数。
Button(action: {
do {
try self.taskViewModel.createInstance(name: self.name)
} catch DatabaseError.CanNotBeScheduled {
Alert(title: Text("Can't be scheduled"), message: Text("Try changing the name"), dismissButton: .default(Text("OK")))
}
}) {
Text("Save")
}
Run Code Online (Sandbox Code Playgroud)
try-catch 块产生以下错误:
Invalid conversion from throwing function of type '() throws -> Void' to non-throwing function type '() -> Void'
Run Code Online (Sandbox Code Playgroud)
这是 viewModel 中的 createInstance 函数,taskModel 函数以同样的方式处理错误。
func createIntance(name: String) throws {
do {
try taskModel.createInstance(name: name)
} catch {
throw DatabaseError.CanNotBeScheduled
}
}
Run Code Online (Sandbox Code Playgroud)
如何正确捕获 SwiftUI 中的错误?
我正在尝试实现像MVC这样的设计模式,以实现代码不同部分之间的低耦合。我个人认为网上很少有关于 IOS 或 swift UI 开发和 MVC 模式的资料没有帮助。
我想了解的是控制器类应该如何控制或呈现 Swift UI 中的 UI?
例如,遵循 MVC 模式 - 视图不应该知道模型的外观,因此将对象从数据库发送回视图以直观地呈现它不是一个好主意。
假设我们有以下视图和控制器,当从数据库发送回数据时,我应该如何进行控制器和视图之间的交互,以便将其直观地呈现在视图中?
看法:
import SwiftUI
import Foundation
struct SwiftUIView: View {
var assignmentController = AssignmentController()
@State var assignmentName : String = ""
@State var notes : String = ""
var body: some View {
NavigationView {
VStack {
Form {
TextField("Assignment Name", text: $assignmentName)
TextField("Notes", text: $notes)
}
Button(action: {
self.assignmentController.retrieveFirstAssignment()
}) {
Text("Get The First Assignment !")
}
}
.navigationBarTitle("First Assignment")
} …
Run Code Online (Sandbox Code Playgroud)