如何检查使用alamofire创建的类模型在swift中是否为nil?

时间:2018-03-20 09:04:02

标签: ios swift alamofire ios10 swift4

我使用 HTTP网络库Alamofire 创建了类模型,其中包含以下数据:

class MyData: NSObject {
    var name = ""
    var params = PublicData()

    func initUserWithInfo(userInfo: [String : AnyObject]) {
           if let name = userInfo["name"] as? String {
                 self.name = name
           }
           if let params = userInfo["params"] as? ParamData {
                 self.params = params
           }
    }
}

class PublicData: NSObject {
    var city = ""

    func initUserWithInfo(userInfo: [String : AnyObject]) {
          if let city = userInfo["city"] as? String {
                 self.city = city
           }
    }
}

现在,当我尝试检查params是否为nil时,它会发出以下警告消息:

let data = MyData()
if data.params != nil {
}
Comparing non-optional value of type 'params' to nil always returns true

if data.params {
}
  

'params'不能转换为'Bool'

if data.rams as Bool {
}
  

无法将'ImpressionObject'类型的值转换为输入'Bool'   胁迫

如何检查嵌套模型类是否为nil

2 个答案:

答案 0 :(得分:2)

您收到此错误是因为您正在初始化params的值,之后不能为零。如果你想使它成为可选项,你应该尝试下面的代码

class MyData: NSObject {
    var name = ""
    /// making variable optional
    var params: PublicData?

    func initUserWithInfo(userInfo: [String : AnyObject]) {
           if let name = userInfo["name"] as? String {
                 self.name = name
           }
           if let params = userInfo["params"] as? ParamData {
                 self.params = params
           }
    }
}

之后你应该使用它如下

let data = MyData()
if let parameters = data.params {
}

答案 1 :(得分:0)

或者你可以写一些更小的东西:

class MyData: NSObject {
var name = ""
/// making variable optional
var params: PublicData?

    func initUserWithInfo(userInfo: [String : AnyObject]) {
        guard let name = userInfo["name"] as? String, let param = userInfo["params"] as? ParamData else { return }
        self.name = name
        self.params = params
    }
}