如何将所有文本字段的值从 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)
    }
}