Alamofire-Swift 3を使用してオブジェクトをアップロードするときにエラーをキャッチするにはどうすればよいですか?

tolerate_Me_Thx

インターネットに接続されていない状態でプロジェクトをテストすると、アップロード関数を呼び出すために、失敗した状況を見つけることができません。
ステータスコードを出力しましたが、nilが表示され、デフォルト値が表示されます。
私がどうかしましたか、まずいことでもありましたか?
また、次のテキストのようなこのエラーが発生しました。

==)[r]:失敗:エラードメイン= NSURLErrorDomainコード= -1009 "インターネットへの接続が切断されたようです。" UserInfo = {NSUnderlyingError = 0x1d4441560 {エラードメイン= kCFErrorDomainCFNetworkコード= -1009 "(null) "UserInfo = {_kCFStreamErrorCodeKey = 50、_kCFStreamErrorDomainKey = 1}}、NSErrorFailingURLStringKey = https:// appdominname / chatroom / 5a3cba41f7255b356eeee33 / media、NSErrorFailingURLKey = https:// appdominname / chatroom / 5a3cba41f7255b356 eeKeyizedKeyscription = https:// eeKeyscription CF = LocalError = 1、CF_MainCode = 1、Stream = Error = LocalCode = 1、CFee_33 / media、インターネットから切断されているようです。}

==)[c]:123

func uploadPost(parameters:[String:Any], fileUrl:URL, _ callback: @escaping (JSON) -> Void)  {

    let url = self.customUrl(parameters)

    Alamofire.upload(multipartFormData: { (multipartFormData) in

        multipartFormData.append(fileUrl, withName: "media")

        for (key, value) in parameters {
            multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }

    }, usingThreshold: .init(), to: url, method: .post, headers:  ["Authorization": "Bearer \(currentUser.token)"]) { (encodingResult) in
        switch encodingResult {
        case .success(let upload, _, _):

            upload.responseJSON(completionHandler: { (response) in

                print("==)[r]:",response)
                print("==)[c]:",response.response?.statusCode ?? "123")

                if let statusCode = response.response?.statusCode {
                    switch statusCode {
                    case 201:
                        print("success statusCode: \(statusCode)")
                    default:
                        print("error with response status: \(statusCode)")
                    }
                }

                if let result = response.result.value {
                    let json = result as! NSDictionary
                    //                        print(json["status"] ?? "")
                    callback(JSON(json))
                }
            })

        case .failure(let encodingError):

            alertWithConfirm(title: localString(string: "WARNING"), message: localString(string: "ERROR_UPLOAD_API_FAIL"), afterConfirm: { _ in
                callback(JSON(encodingError))
            })
            print("error:\(encodingError)")
        }
    }
}
マリク

コードにfailureはエンコード用のブロックのみが含まれ、リクエスト自体には含まれていません。最初のsuccessブロックでは、次のようなことを行う必要があります

case .success(let upload, _, _):
    switch response.result {
        case .success:
            //THE REQUEST WAS SUCCESSFUL
        case .failure:
            //THIS IS WHERE YOU WILL GET YOUR REQUEST FAILURE
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ