Как проверить нулевое условие для ответа JSON? - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь проверить нулевое условие для одного из словарей ответа json. Но когда я проверяю условие, я получаю сообщение об ошибке типа «Двоичный оператор '==' не может быть применен к операндам типа'[String: Any]' и 'JSON' ". Я получаю эту ошибку в строке if !(chattt == JSON.null). Если кто-нибудь поможет мне решить эту проблему, было бы здорово. Заранее спасибо.

 let acce:String = UserDefaults.standard.string(forKey: "access-tokenn")!
        print(acce)

        let headers:HTTPHeaders = ["Authorization":"Bearer \(acce)","Content-Type":"application/X-Access-Token"]
        print((Constants.Chatlistsearch)+(idd))
        Alamofire.request((Constants.Chatlistsearch+idd), method: .get, encoding: URLEncoding.default, headers: headers).responseJSON {  response in
            switch response.result {
            case .success:
                //print(response)
                if response.result.value != nil{
                    var maindictionary = NSDictionary()
                    maindictionary = response.result.value as! NSDictionary
                  //  print(maindictionary)

                    var chat:Dictionary = maindictionary.value(forKey: "data") as! [String:Any]
                   // print(chat)

                    var chatt:Dictionary = chat["user"] as! [String:Any]
                   // print(chatt)

                    var chattt:Dictionary = chat["chat"] as! [String:Any]
                    print(chattt)



                    if !(chattt == JSON.null) {
                        let viewc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ChatViewController") as? ChatViewController
                        self.navigationController?.pushViewController(viewc!, animated: true)
                    }else{
                        print("Find Action")
                    }


//                    self.data = [String(stringInterpolationSegment: chatt["unique_id"])]
//                    print(self.data)

                }
                break
            case .failure(let error):

                print(error)
            }
        }

    }

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

сделать следующее

guard let chattt = chat["chat"] as? [String:Any] else {
    let viewc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ChatViewController") as? ChatViewController
    self.navigationController?.pushViewController(viewc!, animated: true)
    return
}
0 голосов
/ 27 февраля 2019

Вы можете сделать это следующим образом

if let chattt = chat["chat"] as? [String:Any] {
    //It's available. Execute further tasks
} else {
    //It's nil or chat["chat"] type is not dictionary.
}

Вы можете сделать это, используя охрану.

guard let chattt = chat["chat"] as? [String:Any] else {
    //Using this, the further code will never execute as implemented force return here
    return
}

, если возникнет какая-либо проблема, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...