1

我有以下代码:

-(IBAction)downloadButton:(id)sender{

    NSURL *url=[NSURL URLWithString:@"http://93.185.34.100/prob/pic1.zip"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

    [request setDownloadProgressDelegate:progressView];

//    NSString *pathString=[NSString stringWithFormat:@"%@/theZip.zip", [[NSBundle mainBundle] resourcePath]];
    NSString *filePath = [[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"theZip"] stringByAppendingPathExtension:@"zip"];
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSLog(@"Directory Contents:\n%@", [fileManager contentsOfDirectoryAtPath:[[NSBundle mainBundle] resourcePath] error:nil ]);
    [request setDownloadDestinationPath:filePath];
    NSLog(@"Value: %f", [progressView progress]*100);
    [request startAsynchronous];


}

它应该将下载的 zip 文件下载并存储到文档目录中。当我在模拟器上运行它但在设备上不起作用时它会这样做。

问题是什么?

4

1 回答 1

2

您拥有的代码是获取捆绑目录的路径。这些是您的应用程序中包含的资源。可以读取这些资源,但是一旦安装了应用程序,您就无法写入更改它们。本质上,它是您的应用程序的只读目录。

如果要保存文件,应将它们复制(或保存)到应用程序的DocumentsCachesApplication Support文件夹。您可以通过以下方式获取 Documents 和 Caches 文件夹的路径

NSArray* documentsPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDir = (NSString*)[documentsPaths objectAtIndex:0];

NSArray* cachesPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString* cachesDir = (NSString*)[cachesPaths objectAtIndex:0];

这是关于在 iOS 应用程序中保存文件的 Apple 参考(在该页面中搜索Determining Where to Save Your App-Specific Files)。这将提供有关哪个目录最适用于此类数据的一些信息。

重要的是您使用其中一个文件夹,而不是只读捆绑文件夹。

于 2012-07-23T00:30:40.393 回答