在我的iPhone应用程序中,我想下载IIS上的多个文件并进行身份验证.在按钮上单击我想开始下载过程.
我知道如何下载带有身份验证的文件.
NSURLRequest* request = [NSURLRequest requestWithURL:mMovieURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; movieConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self ];
我有几个委托方法与上面的代码.
但是如何同时使用多个下载工具.
谢谢,
我不熟悉MultipleDownload
,但是如果它不能满足你的需求,我认为它的问题是你有一个对象是许多人的代表NSURLConnections
,你想知道如何保持他们的直接.
委托方法都将NSURLConnection
自身作为第一个参数返回.因此,您可以通过测试NSURLConnection
回调哪些数据来跟踪哪些数据.一种方法是NSDictionary
将连接映射到其NSMutableData
对象.现在的诀窍是你不能成为NSURLConnection
字典中的键,因为它不符合NSCopying
(你不希望它).解决此问题的一种方法是使用连接的地址,例如:
NSString *key = [NSString stringWithFormat:@"%p", connection];
这将返回任何对象的唯一键(其地址的十六进制表示).有些人description
为此目的使用,但我不喜欢它,因为它不是一个定义良好的界面.没有任何承诺,它是独一无二的.在我执行此操作的系统中,我-stringWithFormat:
在一个被调用的方法中实现上述内容-uniqueIdentifier
并将其作为一个类别,NSObject
因此可以在字典中跟踪任何内容.
我经常发现创建一个小的包装器对象更容易,这样每个对象都可以控制它自己NSURLConnection
,就像我肯定MultipleDownload
的那样,但是这种技术在各种情况下都很有用,无论你是管理多个tableviews,还是任何有委托的人.
编辑:替换%x我上面有%p,如Peter所述.他是对的,我没有正确思考.仔细检查我的代码,我实际上一直在使用%p,之前遇到过这个错误....
之前我曾经想要同时下载10个XML文件(比排队下载一个接一个的快得多).我使用了这里找到的库:
http://github.com/leonho/iphone-libs/tree/master
它们很容易实现,并且首页上有一些示例代码可以帮助您入门.
self.urls = [NSMutableArray arrayWithObjects: @"http://maps.google.com/maps/geo?output=json&q=Lai+Chi+Kok,Hong+Kong", @"http://maps.google.com/maps/geo?output=json&q=Central,Hong+Kong", @"http://maps.google.com/maps/geo?output=json&q=Wan+Chai,Hong+Kong", nil]; self.downloads = [[MultipleDownload alloc] initWithUrls: urls]; self.downloads.delegate = self;
祝好运.