9183

我想用将writeToFile到PIC图像存储的文件,却发现下面的错误,怎么解决呢?
错误域= NSCocoaErrorDomain代码= 512 “的操作无法完成。(可可错误512)”{NSFilePath = /用户/ alexqdh /库/应用程序支持/ iPhone模拟器/ 6.0 /应用/ XXX /文件/ girl.png ,NSUnderlyingError = 0x753e630“操作无法完成。是目录”}
-(NSString*)getImagePath:(NSString *)name
{
NSArray *path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [path objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *finalPath = [docPath stringByAppendingPathComponent:name];
[fileManager createDirectoryAtPath:finalPath withIntermediateDirectories:YES attributes:nil error:nil];
return finalPath;
}
//below is how to use NSData writeToFile
AFImageRequestOperation *opera = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
img.image = image;
[self.view addSubview:img];
NSData *imageData = UIImagePNGRepresentation(img.image);
if(imageData == nil)
{
NSLog(@"imageData nil");
}
NSString *picPath = [self getImagePath:@"girl.png"];
NSLog(@"path:%@",picPath);
NSError *error = [[NSError alloc]init];
BOOL a = [imageData writeToFile:picPath options:NSDataWritingAtomic error:&error];
if(a == YES)
{
NSLog(@"YES");
}
else
{
NSLog(@"NO.error:%@", error);
}
/*NSData *imageData = UIImagePNGRepresentation(img.image);
NSString *picPath = [self getImagePath:@"girl.png"];
[imageData writeToFile:picPath atomically:YES];*/
NSLog(@"Got it.code:%d",response.statusCode);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Failed pic.error:%@",error);
}];
[opera start];
Answer 1:
这个Question是通过创建与图像的名称的目录,然后试图写一个文件来取代目录引起的。 换句话说,你首先创建一个名为:
文件/ girl.png /
然后尝试写入文件的路径:
文件/ girl.png
显然,这不是你的意思做。 在您的getImagePath:
方法,摆脱调用创建的目录。 该Documents
目录将已经存在。 当然,你不想对应文件名的目录。
另一种选择是改变你的getImagePath:
到:
- (NSString*)getImagePath:(NSString *)name {
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [path objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *finalPath = [docPath stringByAppendingPathComponent:name];
// Remove the filename and create the remaining path
[fileManager createDirectoryAtPath:[finalPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];
return finalPath;
}
这个更新的代码现在支持你顺便name
值,其中包括你可能想子目录。
文章来源: Error Domain=NSCocoaErrorDomain Code=512 \"The operation couldn’t be completed.The operation couldn’t be completed. Is a directory