У меня есть условие, как показано ниже.
var hotelType: String = "test"
hotelType==hotelInfo.type!
Допустим, hotelInfo
имеет структуру, как показано ниже.
struct HotelInfo : Decodable {
var type: String?
}
Поскольку приложение зависало, говоря, что hotelType
было нулем,Я обновляю код, как показано ниже.
hotelType==(hotelInfo.type!==nil ? "" : hotelInfo.type!)
Однако приложение по-прежнему падает, сообщая фатальная ошибка: неожиданно обнаружен ноль при развертывании необязательного значения
Есть ли способ, где я могу проверить на ноль, прежде чем проверять фактические данные.
Примечание: , У меня есть альтернативное решение (которое также работает нормально), но наверняка я чувствую этонеправильно.То, что я хотел бы сделать, это добавить еще одну переменную как nil к пустой строке, как показано ниже, и проверить эту переменную.
struct HotelInfo : Decodable {
var type: String?
var typeFixed: String? {
get {
if (self.type==nil) {
return ""
}
return self.type
}
}
}
и использовать эту переменную
hotelType==hotelInfo.typeFixed!
Самое важное
Я делаю это внутри фильтра, поэтому я не могу использовать оператор if let
(это реальный код, но я даю выше простую логику, поскольку данные оченьсложный)
finalArray = finalArray.filter { hotels in
hotels.infos?.contains { roomInfo in
selectedChain.contains { rt in
rt == (roomInfo.hotelChain?.supplierHotelChain!==nil ? "" : roomInfo.hotelChain?.supplierHotelChain!)
}
} ?? false
}
rt == (roomInfo.hotelChain?.supplierHotelChain!==nil ? "" : roomInfo.hotelChain?.supplierHotelChain!)
здесь я проверяю состояние.
Может ли кто-нибудь указать мне правильное направление, чтобы получить нужные данные.