IOS:多个 NSUrlConnection 以及多个 UIProgressBar
Posted
技术标签:
【中文标题】IOS:多个 NSUrlConnection 以及多个 UIProgressBar【英文标题】:IOS: multiple NSUrlConnection along with multiple UIProgressBar 【发布时间】:2015-02-26 12:21:29 【问题描述】:我正在编写一个 ios 文件上传应用程序,它一次打开多个NSUrlConnection
(每个文件上传一个文件),并希望为每个文件实现相应的进度条。
NSUrlConnection
文件上传sn-p:
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:request
delegate:self
[urlConnection start];
更新进度条的委托方法:
- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
self.progressBar.progress += (float)bytesWritten/(float)totalBytesExpectedToWrite;
NSLog(@"it's working: %lf",self.progressBar.progress);
现在这种情况如果我每个文件上传都有一个单独的进度条,有没有办法知道是哪个文件上传,也就是这个delegate对应的是哪个NSURLConnection
,这样我就可以更新正确的进度条了因此。我可以在NSURLConnection
中设置任何属性,我可以在委托方法中的连接变量中访问这些属性吗?
谢谢。
【问题讨论】:
【参考方案1】:我所做的是我构建了自己的类(例如 MyUploader),并在其中添加了 NSURLConnection 对象,同时还引用了将由该 NSURLConnection 对象更新的进度条控件。
@interface MyUploader
@property (strong, nonatomic) NSURLConnection* connection;
@Property (weak, nonatomic) UIProgressBar bar;
- (void)startUploadingFile:(NSString*)filePath withBarToUpdate:(UIProgressBar*)progressBar;
@end
在您的视图控制器中,您可以在 startUploadingFile:withBarToUpdate: 中传递 bar 对象和文件路径,它可以存储 bar 对象并启动连接。
这个类也应该实现 NSURLConnectionDelegate 来更新进度条,就像你在代码中所做的那样
【讨论】:
以上是关于IOS:多个 NSUrlConnection 以及多个 UIProgressBar的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发之网络编程--使用NSURLConnection实现大文件下载