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 ?? ""
}
}
或者写一个可编码类来直接解码字典