Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了uploadTask使用Swift中的AFNetworking进度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试将NSProgress与AFNetworking一起使用,这是我正在使用的代码 //func upload... //... let request: NSMutableURLrequest = AFhttprequestserializer().multipartFormrequestWithMethod("POST", URL@R_450_10495@ng: url, parameters: s3pa
我正在尝试将NSProgress与AFNetworking一起使用,这是我正在使用的代码

//func upload...
//...
let request: NSMutableURLrequest = AFhttprequestserializer().multipartFormrequestWithMethod("POST",URL@R_450_10495@ng: url,parameters: s3parameters,construcTingBodyWithBlock: { formData in
      let data: AFMultipartFormData = formData
      data.appendPartWithFileURL(fileURL,name: "file",error: nil)
    },error: nil)
    request.SETVALue("application/json",forhttpHeaderField: "Accept")

    let sessionManager: AFURLSessionManager = AFURLSessionManager(sessionConfiguration: NSURLSessionConfiguration.defaultSessionConfiguration())
    var progress: NSProgress?

    let uploadTask: NSURLSessionUploadTask = sessionManager.uploadTaskWithStreamedrequest(request,progress: &progress,completionHandler: { (response,responSEObject,error) in
    //...
    })

    uploadTask.resume()
    progress?.addObserver(self,forKeyPath: "fractionCompleted",options: NSKeyValueObservingOptions.Initial,context: nil)
//...

override func observeValueForKeyPath(keyPath: @R_450_10495@ng,ofObject object: AnyObject,change: [NSObject : AnyObject],context: UnsafeMutablePointer<Void>) {
  let progress: NSProgress = object as NSProgress
  println("progress: \(progress.fractionCompleted)")
}

文件是正确上传的,但事实并非如此 – 我只打印了一次进度值(“progress:0.0”),然后我以AFURLSessionManager.m中的EXC_BAD_ACCESS结束:

#pragma mark - NSURLSessionTaskDelegate

- (void)URLSession:(__unused NSURLSession *)session
          task:(__unused NSURLSessionTask *)task
didSendBodyData:(__unused int64_t)bytesSent
@R_385_10586@lBytesSent:(int64_t)@R_385_10586@lBytesSent
@R_385_10586@lBytesExpectedToSend:(int64_t)@R_385_10586@lBytesExpectedToSend
{
    self.progress.@R_385_10586@lUnitCount = @R_385_10586@lBytesExpectedToSend; <<< EXC_BAD_ACCESS
    self.progress.completedUnitCount = @R_385_10586@lBytesSent;
}

我究竟做错了什么?我应该设置“var progress:NSProgress?”不同还是还有别的东西我不见了?

解决方法

哦,我已经修好了 – 我需要从进度中移除观察者:

let uploadTask: NSURLSessionUploadTask = sessionManager.uploadTaskWithStreamedrequest(request,error) in
//...
progress?.removeObserver(self,context: nil) // added this line
//...
})

大佬总结

以上是大佬教程为你收集整理的uploadTask使用Swift中的AFNetworking进度全部内容,希望文章能够帮你解决uploadTask使用Swift中的AFNetworking进度所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。