ResponseSerialization.swift崩溃(部分申请专门)

时间:2018-07-19 09:33:04

标签: json swift crash alamofire response

我在Fabric上遇到此错误: ResponseSerialization.swift第167行 部分申请专业

我认为这与以下事实有关:返回给我的JSON格式不同。但是我怎么解决呢?

这是Fabric Crashlytics屏幕: Fabric screen

线300断开,但是那里没有连接。我想这是一个问题,因为这里没有错误。

ApiManager.sharedInstance.makeRequest(urlString: url, params: nil, success: { (responseString) in
        guard let response = Model(JSONString: responseString) else {
            self.noResult()
            return
        }
     ...
}, errors: { (errorCode) in // ERROR LINE (Line 300)
    self.noResult(errorCode)
})

我还在Window> Organizer> xCode中崩溃时看到了相同的错误。这些是我的代码和错误行屏幕: enter image description here

enter image description here

  

我也尝试了try-catch,但由于代码不起作用而无法正常工作   陷入错误。

这是我的简化请求代码:

AFManager = Alamofire.SessionManager(configuration:configuration)//在AppDelegate中定义。

class ApiManager{
    static let sharedInstance = ApiManager()

    func makeRequest(urlString: String, params: Parameters!, success: @escaping (_ responseObject:String)->() = { _ in }, errors: @escaping (_ errorMessage:String)->() = { _ in } ){

        AFManager.request(urlString, method: .get, parameters: params, headers: headers)
            .responseJSON { response in

                switch response.result {
                case .success:
                    if let status = response.response?.statusCode {
                        switch(status){
                        case 200:

                            guard let response_data = response.data else {
                                errors("\(status)")
                                return
                            }
                            guard let utf8Text = String(data: response_data, encoding: .utf8) else {
                                errors("\(status)")
                                return
                            }
                            success(utf8Text) // ERROR LINE

                            break
                        default:
                            errors("\(status)")

                        }
                    }
                case .failure(let error):
                    errors(String(error._code))
                }
        }
    }
}

Alamofire / ResponseSerialization.swift: https://github.com/Alamofire/Alamofire/blob/master/Source/ResponseSerialization.swift

1 个答案:

答案 0 :(得分:0)

崩溃发生在完全不同的地方。织物错误行显示在错误的位置。 Fabric在第 300 行显示崩溃,但实际上是在 272

enter image description here

var coordinate = response.coordinates[0] // Line 272

这是失败类的代码:

ApiManager.sharedInstance.makeRequest(urlString: url, params: nil, success: { (responseString) in
     guard let response = Model(JSONString: responseString) else {
         self.noResult()
         return
     }
     var coordinate = response.coordinates[0] // ACTUALLY ERROR LINE (Line 272)
     ...
}, errors: { (errorCode) in // FABRIC ERROR LINE (Line 300)
    self.noResult(errorCode)
})