通过以下代码,我尝试定义一个简单的模型类,它是可失败的初始化器,该初始化器将(json-)字典作为参数。nil
如果用户名未在原始json中定义,则初始化程序应返回。
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()
}
}
canSetCalculableProperties
布尔参数,允许我的初始化程序计算可以动态创建或无法动态创建的属性。例如,如果dateCreated
缺少某个键,并且由于canSetCalculableProperties
参数为true,我可以即时设置属性 ,那么我只需将其设置为当前日期即可。