如何删除警告“从‘Any’到‘AnyObject’的条件转换总是成功”

Flo*_*scu 0 ios nsjsonserialization nsurlsession swift

我创建了一个类,当我尝试将对象转换为 AnyObject 时收到一条警告消息。警告是:“从‘Any’到‘AnyObject’的条件转换总是成功”如何从我的文件中删除此警告?

这是我的代码:

class WebServices
{
    class func getRequest( urlString: String, successBlock :@escaping (_ response :AnyObject)->Void, errorMsg:@escaping (_ errorMessage :String)->Void )
    {
        var request = URLRequest(url: URL(string: urlString)!)
        request.httpMethod = "GET"

        let task = URLSession.shared.dataTask(with: request) { (data, urlResponse, error) in

            DispatchQueue.main.async {
                if(error == nil)
                {
                    do {
// Here is the warning 
                        let responseJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? AnyObject 
                        guard let _ = responseJSON else {
                            errorMsg("Some error has been occurred!")
                            return
                        }
                        successBlock(responseJSON!)
                    }
                    catch
                    {
                        errorMsg("Some error has been occurred!")
                    }
                }
                else
                {
                    errorMsg(error!.localizedDescription)
                }
            }
        }
        task.resume()
    }
}
Run Code Online (Sandbox Code Playgroud)

感谢你们抽出宝贵的时间阅读本文!

Sh_*_*han 5

这个功能

let responseJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? AnyObject 
Run Code Online (Sandbox Code Playgroud)

返回Any和你将其转换为AnyObject几乎相同的内容,最好转换为预期的 json 内容,无论它是数组还是字典

let responseJSON = try JSONSerialization.jsonObject(with: data!) as? [String:Any] 
Run Code Online (Sandbox Code Playgroud)

或者

let responseJSON = try JSONSerialization.jsonObject(with: data!) as? [Any] 
Run Code Online (Sandbox Code Playgroud)

并相应地更改完成