从URL iPhone异步下载

时间:2011-11-11 06:10:53

标签: iphone objective-c asynchronous

您好我想要一个很好的教程,向我展示如何使用目标C将文件从URL下载到本地手机存储 我已完成以下同步,但我想让它成为同步

  NSString* docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString* fileToDownload = @"data1.plist";
NSString* hostURLString = @"http://localhost/test";
hostURLString = [hostURLString stringByAppendingPathComponent: fileToDownload];
NSURL* pListURL = [NSURL URLWithString: hostURLString];
NSData* pListData = [NSData dataWithContentsOfURL: pListURL];
NSString* filePath = [docsDir stringByAppendingPathComponent: fileToDownload];
[pListData writeToFile: filePath atomically: NO];


NSString* Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *DataPath = [Path stringByAppendingPathComponent:@"data1.plist"];

任何建议

2 个答案:

答案 0 :(得分:5)

下面是我的异步下载图像和数据的代码。你可以为了你的目标而玩它。

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
    dispatch_async(queue, ^{
        NSLog(@"Screen %@ - pauseBannerFileImage download starts", self.name);          
        UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:newUrlForImage]]];
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:newUrlForImage]];
        dispatch_sync(dispatch_get_main_queue(), ^{
            NSLog(@"!-Screen %@-!pauseBannerFileImage downloaded", self.name);
            self.pauseBannerFileImage = image;
        });
    });

答案 1 :(得分:1)

Using NSURLConnectionURL Loading System Programming Guide部分介绍了如何创建异步连接,以及如何同步下载。

另一个选择是使用ASIHTTPRequest,它也可以执行同步或异步请求。