我使用AWSLocal内容上传方式上传文件.我需要从另一个屏幕上取消上传.
private func uploadLocalContent(localContent: AWSLocalContent) { localContent.uploadWithPinOnCompletion(false,progressBlock: {[weak self](content: AWSLocalContent?,progress: nsprogress?) -> Void in guard let strongSelf = self else { return } dispatch_async(dispatch_get_main_queue()) { // Update the upload UI if it is a new upload and the table is not yet updated if(strongSelf.tableView.numberOfRowsInSection(0) == 0 || strongSelf.tableView.numberOfRowsInSection(0) < strongSelf.manager.uploadingContents.count) { strongSelf.updateUploadUI() } else { for uploadContent in strongSelf.manager.uploadingContents { if uploadContent.key == content?.key { let index = strongSelf.manager.uploadingContents.indexOf(uploadContent)! let indexPath = NSIndexPath(forRow: index,inSection: 0) strongSelf.tableView.reloadRowsAtIndexPaths([indexPath],withRowAnimation: .None) } } } } },completionHandler: {[weak self](content: AWSContent?,error: NSError?) -> Void in guard let strongSelf = self else { return } strongSelf.updateUploadUI() if let error = error { print("Failed to upload an object. \(error)") strongSelf.showSimpleAlertWithTitle("Error",message: "Failed to upload an object.",cancelButtonTitle: "OK") } else { strongSelf.refreshContents() } }) updateUploadUI() }
解决方法
不幸的是,AWSLocalContent调用时无法取消上传,因为无法访问AWTask.
查看awss3transfermanager(http://docs.aws.amazon.com/AWSiOSSDK/latest/Classes/AWSS3TransferManager.html#//api/name/upload :),为每个操作创建一个AWTask,可以上传或下载,可以取消/暂停/恢复.此外,您可以从awss3transfermanager获取方便的方法,可以一次取消/暂停/恢复所有任务.
您必须创建上传AWTask,将其保留在可从其他屏幕访问的位置,然后您就可以取消它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。