如何比较AnyObject是否为<null>?

时间:2018-08-27 17:00:06

标签: ios swift anyobject

我正在编写下面的函数,以基于传递给此方法的数据对象返回值。

如果我们获取的数据为空,则尝试返回“-”,否则,如果我得到任何有效的响应,则返回值。.

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

我的问题如何在此处比较空值。

2 个答案:

答案 0 :(得分:1)

您最有可能希望将valueNSNull进行比较。

您可以按以下方式更新代码:

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