Проверьте словарь, содержащий нулевые значения и пустые значения - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу, чтобы мой словарь содержал ноль или пустое значение (ноль и ""), добавьте показывать его в пользовательском интерфейсе, мой словарь содержит строковые и целочисленные значения

let params = [
        "token":APItoken.getToken(),
        "gender":gender_id,
        "car_number":number_car,
        "car_model":car_model,
        "year_of_birth":1998,
        "car_year":create_year,
        "seats_number":sits,
        "facilities":fac,
        "type":typeID
        ] as [String : Any]

Я пытаюсь использовать этот код, но это не работает

  if params.values.filter({ $0 == nil }).isEmpty
    {
        print("full")
    }
    else
    {
        print("empty")
    }

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Измените тип Dictionary с [String: Any] на [String: Any?] , чтобы сравнить значения с nil

let someDict = ["first":"name","second":1,"third":1.2,"someNilValue":nil] as [String:Any?]

func checkEmptyDict(_ dict:[String:Any?]) -> Bool {

for (_,value) in dict {
    if value == nil || value as? String == "" { return true }
   }

return false

}

checkEmptyDict(someDict) //returns true
0 голосов
/ 29 ноября 2018

Вы должны изменить тип параметра [String: Any] на [String: Any?] Ваш код для проверки nil правильный, просто нужно добавить условие пустой строки, например:

       if params.values.filter({
            if let x = $0 {
                if let str = x as? String , str.isEmpty {
                    return true
                } else {
                    return false
                }
            } else {
                return true
            }
        }).isEmpty
        {
            print("not contain nil value ")
        }
        else
        {
            print("contain nil value ")
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...