最佳答案
使用以下代码,我试图定义一个简单的模型类及其可失败的初始化器,该初始化器以(json -) dictionary 作为参数。如果原始 json 中没有定义用户名,初始化器应该返回 nil
。
1. 为什么代码无法编译? 错误消息显示:
类实例的所有存储属性必须在从初始值设定项返回 nil 之前进行初始化。
这没有意义。当我计划返回 nil
时,为什么要初始化这些属性?
2. 我的方法是正确的吗? 还是有其他的想法或共同的模式来实现我的目标?
class User: NSObject {
let userName: String
let isSuperUser: Bool = false
let someDetails: [String]?
init?(dictionary: NSDictionary) {
if let value: String = dictionary["user_name"] as? String {
userName = value
}
else {
return nil
}
if let value: Bool = dictionary["super_user"] as? Bool {
isSuperUser = value
}
someDetails = dictionary["some_details"] as? Array
super.init()
}
}