投掷函数类型'(_,_)抛出的转换无效 - > ()'到非投掷函数类型'(JSON?,错误?) - >虚空'

时间:2018-04-29 01:56:33

标签: ios swift alamofire swifty-json

我遇到错误

        EduappRestClient.request(with: URLString, method: .post, parameters: parameters) { (json, error) in
        guard error == nil, let json = json else {
            completion(nil, error)
            return
        }
        let result = try JSONDecoder().decode(QuestionModel.self, from: json)
        completion(result, nil)
    }

它是我正在调用的API,我的完整源代码可以在 https://github.com/WilliamLoke/quizApp

我可能知道我得到这行错误代码的问题是什么?

2 个答案:

答案 0 :(得分:1)

由于预计此块不会引发错误,因此您需要将抛出的调用包装在do catch块中:

EduappRestClient.request(with: URLString, method: .post, parameters: parameters) { (json, error) in
    guard error == nil, let json = json else {
        completion(nil, error)
        return
    }
    do {
        let result = try JSONDecoder().decode(QuestionModel.self, from: json)
        completion(result, nil)
    } catch let error {
        completion(nil, error)
    }
}

答案 1 :(得分:0)

我遇到了同样的问题,解决方法很简单:您可以使用 try? 而不是 try

guard let result = try? JSONDecoder().decode(QuestionModel.self, from: json)
相关问题