我使用 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
?
答案 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
}
}