适应不断变化的Swift iOS模式


class User {
    var uid : String
    var profileImageURL : String
    init(uid : String, profileImageURL : String) {
        self.uid = uid 
        self.profileImageURL = profileImageURL
    }
}

如果我的项目从上面这样的用户模型开始,并且我有一个庞大的应用程序,其中该用户在20多个文件中进行初始化,如果我要进去添加一个新的必需属性,如年龄,我必须修复每个文件的初始化器。更糟糕的是,我必须在每个初始值设定项之后,在它自己的行上设置新属性。

如果我被要求在生产过程中增加25处新房产,这将是一场噩梦。

处理这种未来可能发生变化的大型机型的最佳方法是什么?

我不会在20+位置初始化对象。这使得代码变得脆弱。添加一个额外的层,如用户管理,您可以询问当前用户/询问任何用户。在一个地方进行初始化。

您可以执行类似的操作

class User {
    var uid : String
    var profileImageURL : String
    init(all : [String:Any]) {
        self.uid = all["uid"] as? String ?? ""
        self.profileImageURL = all["profileImageURL"] as? String ?? ""
    }
}

或者写一个可编码类来直接解码字典

最新更新