Ios NSData writeToFile不工作

Ios NSData writeToFile不工作,ios,nsdata,writetofile,Ios,Nsdata,Writetofile,我似乎无法将nsdata写入文件。知道我做错了什么吗。提前谢谢 NSString* filename = @"myfile.txt"; NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *storePath = [applicationDocumentsDi

我似乎无法将nsdata写入文件。知道我做错了什么吗。提前谢谢

NSString* filename = @"myfile.txt";

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

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:filename];    

if ([fileManager fileExistsAtPath:applicationDocumentsDir])
    NSLog(@"applicationDocumentsDir exists");   // verifies directory exist

NSData *data = [NSData dataWithContentsOfURL:URL];

if (data) {    
     NSString *content = [[NSString alloc]  initWithBytes:[data bytes]
                                                      length:[data length] encoding: NSUTF8StringEncoding];

    NSLog(@"%@", content); // verifies data was downloaded correctly

    NSError* error;
    [data writeToFile:storePath options:NSDataWritingAtomic error:&error];

    if(error != nil)
        NSLog(@"write error %@", error);
}
我一直在犯错误

"The operation couldn’t be completed. No such file or directory"
试一试


要获取更多信息,您可以使用

writeToFile:选项:错误:

而不是

writeToFile:原子化:

但是在写之前,需要在路径中创建所有子目录。像这样:

// if the directory does not exist, create it...
if ( [fileManager fileExistsAtPath:dir_path] == NO ) {
    if ( [fileManager createDirectoryAtPath:dir_path withIntermediateDirectories:NO attributes:NULL error:&error] == NO  ) {
        NSLog(@"createDirectoryAtPath failed %@", error);
    }
}

您不应该检查
error
是否为nil——它可以初始化为任何值(在您的情况下)。检查写入文件:选项:错误的结果以确定成功或失败。如果返回false(否),则只有在返回false(否)时,您才能读取错误。感谢您的回复。它返回否。我删除了复选框以使文章尽可能短。在调用writeToFile:options:error:之前,storePath变量的值是多少?你的代码看起来不错,但你所遇到的错误让我怀疑这条路径指向何处。所以这就奏效了,很奇怪。字符串与nsstring变量有什么不同。如果打印出来,它有文件:在开始时,它是一个URL。我只是遇到了这个问题,尽管我坚持使用字符串函数。fileExistsAtPath返回false。怎么办?当然,它不存在,因为文件尚未创建。如何创建它?
 if ([[NSFileManager defaultManager] fileExistsAtPath:storePath])
        NSLog(@"applicationDocumentsDir exists");   
// if the directory does not exist, create it...
if ( [fileManager fileExistsAtPath:dir_path] == NO ) {
    if ( [fileManager createDirectoryAtPath:dir_path withIntermediateDirectories:NO attributes:NULL error:&error] == NO  ) {
        NSLog(@"createDirectoryAtPath failed %@", error);
    }
}