Как сравнить AnyObject <Null>или нет? - PullRequest
0 голосов
/ 27 августа 2018

Я пишу ниже функцию для возврата значения на основе данных объекта, которые я передал этому методу.

Если мы получаем нулевые данные, я пытаюсь вернуть "-", в противном случае, если я получаю какой-либо действительный ответ, я возвращаю значение ..

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 голосов
/ 27 августа 2018

Я бы воспользовался мощью корпусов выключателей и пошел бы:

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)"
    }
}
0 голосов
/ 27 августа 2018

Скорее всего, вы хотите сравнить 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 "-"
    }
}
...