相关疑难解决方法(0)

在Swift中实现可用初始化程序的最佳实践

使用以下代码,我尝试定义一个简单的模型类,它是可用的初始化器,它将(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()
    }
}
Run Code Online (Sandbox Code Playgroud)

object-initializers swift

98
推荐指数
4
解决办法
2万
查看次数

标签 统计

object-initializers ×1

swift ×1