我有以下代码:
-(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文件下载并存储到文档目录中。当我在模拟器上运行它但在设备上不起作用时它会这样做。
有什么问题?
答案 0 :(得分:2)
您拥有的代码是获取bundle目录的路径。这些是您在应用中包含的资源。这些资源可以读取,但是一旦安装了应用,您就无法编写或更改这些资源。从本质上讲,它是您应用的只读目录。
如果您想保存文件,则应将其复制(或保存)到应用的文档,缓存或应用支持夹。您可以使用
获取Documents and 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];
Here is an Apple reference关于在iOS应用中保存文件(搜索确定保存应用专用文件的位置的页面)。这将提供有关哪种目录最适用于此类数据的一些信息。
重要的是你使用其中一个文件夹,而不是只读包文件夹。