如何将所有文本字段的值从 View Controller 传递到 Model class 以将模型逻辑与其分离?
How can I pass values from all text fields from View Controller to Model class to decouple model logic from it?
我想从视图控制器保存操作中移动创建新对象或现有对象的逻辑,并将其以某种方式传递给模型进行解析。 View大约有十个字段的数据需要传递。现在我的保存方法有 60 多行,其中至少 40 行应该移动到模型 class.
我正在考虑创建 [String: Any?]
类型的字典来捕获所有字段,然后将其传递给模型的方法,但我不确定这是否有效?
我可以请你推荐吗?
你的方法是有效的,但我认为你不需要字典。只需添加一个解析器方法,该方法接收文本字段作为参数并具有创建模型的逻辑。
假设您有一个 Person 模型:
class Person {
var firstName: String
var lastName: String
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
static func parse(firstName: String, lastName: String) -> Person {
// Add here the required logic
return Person(firstName: firstName, lastName: lastName)
}
}
然后在你的视图控制器中你可以这样做:
let person = Person.parse(firstName: firstNameTextField.text, lastName: lastNameTextField.text)
编辑:
您也可以使用结构并摆脱 init
struct Person {
var firstName: String
var lastName: String
static func parse(firstName: String, lastName: String) -> Person {
// Add here the required logic
return Person(firstName: firstName, lastName: lastName)
}
}
我想从视图控制器保存操作中移动创建新对象或现有对象的逻辑,并将其以某种方式传递给模型进行解析。 View大约有十个字段的数据需要传递。现在我的保存方法有 60 多行,其中至少 40 行应该移动到模型 class.
我正在考虑创建 [String: Any?]
类型的字典来捕获所有字段,然后将其传递给模型的方法,但我不确定这是否有效?
我可以请你推荐吗?
你的方法是有效的,但我认为你不需要字典。只需添加一个解析器方法,该方法接收文本字段作为参数并具有创建模型的逻辑。
假设您有一个 Person 模型:
class Person {
var firstName: String
var lastName: String
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
static func parse(firstName: String, lastName: String) -> Person {
// Add here the required logic
return Person(firstName: firstName, lastName: lastName)
}
}
然后在你的视图控制器中你可以这样做:
let person = Person.parse(firstName: firstNameTextField.text, lastName: lastNameTextField.text)
编辑:
您也可以使用结构并摆脱 init
struct Person {
var firstName: String
var lastName: String
static func parse(firstName: String, lastName: String) -> Person {
// Add here the required logic
return Person(firstName: firstName, lastName: lastName)
}
}