我正在尝试使用以下代码保存图像:

- (void)writeData{

    if(cacheFileName==nil)
        return;
    if(cacheDirectoryPath==nil)
        return;


    if (![[NSFileManager defaultManager] fileExistsAtPath:[self filePath]]) {

        NSData *imageData = UIImageJPEGRepresentation(self.image, 0.9);

        NSError *writeError= nil;

        BOOL didWrite =  [imageData writeToFile:[self filePath] options:NSAtomicWrite error:&writeError];

        if(writeError)
            NSLog([writeError localizedDescription]);

        if(didWrite)
            NSLog(@"image saved");
        else
            NSLog(@"image not saved");


    }
}





 - (NSString *)filePath{

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cacheDirectory = [paths objectAtIndex:0];
    NSString *filename = [cacheDirectory stringByAppendingPathComponent:cacheDirectoryPath];
    filename = [filename stringByAppendingPathComponent:cacheFileName];
    NSLog(filename);

    return filename;

}


我收到一个错误:

2009-06-23 16:39:19.740 XXX[33454:20b] Operation could not be completed. (Cocoa error 4.)


我查了一下,发现错误含义如下:

 NSFileNoSuchFileError = 4,                 // Attempt to do a file system operation on a non-existent file


这没有意义,因为该文件不应该存在。

我尝试编写png表示形式并使用便捷方法:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag


我正在使用类似的代码来保存plists,并且它们工作正常。我不确定是什么问题。有任何想法吗?

最佳答案

我看到您在“缓存目录”中使用了一些中间目录,它是否已创建?如果不尝试删除它们或使用

-[NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error:]


在之前创建它们

关于iphone - 将数据保存到缓存目录(iPhone)时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1035092/

10-14 21:15
查看更多