当前位置:  开发笔记 > 编程语言 > 正文

在iPhone应用程序中下载多个文件(目标c)

如何解决《在iPhone应用程序中下载多个文件(目标c)》经验,为你挑选了2个好方法。

在我的iPhone应用程序中,我想下载IIS上的多个文件并进行身份验证.在按钮上单击我想开始下载过程.

我知道如何下载带有身份验证的文件.

    NSURLRequest* request =
               [NSURLRequest requestWithURL:mMovieURL 
                             cachePolicy:NSURLRequestUseProtocolCachePolicy 
                             timeoutInterval:60.0];
    movieConnection =
            [[NSURLConnection alloc] initWithRequest:request delegate:self ];

我有几个委托方法与上面的代码.

但是如何同时使用多个下载工具.

谢谢,



1> Rob Napier..:

我不熟悉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,之前遇到过这个错误....



2> nevan king..:

之前我曾经想要同时下载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;

祝好运.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有