uploadTask使用Swift中的AFNetworking进度

uploadTask使用Swift中的AFNetworking进度,第1张

概述我正在尝试将NSProgress与AFNetworking一起使用,这是我正在使用的代码 //func upload...//...let request: NSMutableURLRequest = AFHTTPRequestSerializer().multipartFormRequestWithMethod("POST", URLString: url, parameters: s3pa 我正在尝试将nsprogress与AFNetworking一起使用,这是我正在使用的代码

//func upload...//...let request: NSMutableURLRequest = AFhttpRequestSerializer().multipartFormRequestWithMethod("POST",URLString: 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: String,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 *)taskdIDSendBodyData:(__unused int64_t)bytesSenttotalBytesSent:(int64_t)totalBytesSenttotalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend{    self.progress.totalUnitCount = totalBytesExpectedToSend; <<< EXC_BAD_ACCESS    self.progress.completedUnitCount = totalBytesSent;}

我究竟做错了什么?我应该设置“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进度所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/999798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存