我正在编写下面的函数,以基于传递给此方法的数据对象返回值。
如果我们获取的数据为空,则尝试返回“-”,否则,如果我得到任何有效的响应,则返回值。.
private func checkDataForValue(data: Optional<AnyObject>) -> String {
if let value = data {
let value1: AnyObject = //have to check <Null>
if value === value1 {
return "-"
}
return "\(value)"
} else {
return "-"
}
}
我的问题如何在此处比较空值。
答案 0 :(得分:1)
您最有可能希望将value
与NSNull
进行比较。
您可以按以下方式更新代码:
private func checkDataForValue(data: Any?) -> String {
if let value = data {
if value is NSNull != nil {
return "-"
} else if (value as? String)?.lowercased() == "<null>" {
return "-"
} else {
return "\(value)"
}
} else {
return "-"
}
}
答案 1 :(得分:0)
我会充分利用开关盒的强大功能,并选择:
private func checkDataForValue(data: Any?) -> String {
switch data {
case .none, .some(is NSNull): return "-"
case .some(let value as String): return value == "<null>" ? "-" : value
case .some(let value): return "\(value)"
}
}