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

How to check if a class model created using alamofire is nil in swift?

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

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' is not convertible to 'Bool'

if data.rams as Bool {
}

Cannot convert value of type 'ImpressionObject' to type 'Bool' in coercion

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

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

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 {
}

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

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
    }
}