2013-07-11 141 views
0

我试图在每次按下保存按钮时将图像保存到磁盘。这是我使用的代码:防止在调用writeToFile时覆盖:

NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); 

NSString* documentDirectory = [documentDirectories objectAtIndex:0]; 
NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:@"piclogs"]; 

[pdfData writeToFile:documentDirectoryFilename atomically:YES]; 

现在,很明显要保存每次调用此方法时,将覆盖先前保存文件的文件。我试图找到一种方法来存储每张照片,而不是每次都重写。有谁知道是否有一个简单的解决方案来实现这一目标?我浏览了文档,但找不到任何相关的内容。

+3

每次保存文件时都需要使用不同的文件名。 – rmaddy

回答

2

使用NSUUIDCFUUIDCreate创建一个可用于该文件的唯一名称。

1

或者您可以检查具有该名称的文件是否存在,以及它是否不写入文件。然后如果你想要的话改名字,这样你就可以得到你想要或不想要保存的东西的副本。

NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); 

NSString* documentDirectory = [documentDirectories objectAtIndex:0]; 
NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:@"piclogs"]; 
if (![NSURL fileURLWithPath:[self documentsPathForFileName:documentDirectoryFilename]]) { 
    [pdfData writeToFile:documentDirectoryFilename atomically:YES]; 
} else { 
    NSString* altName = [NSString stringWithFormat:@"%@-%d", documentDirectoryFilename, intValue]; 
    [pdfData writeToFile:altName atomically:YES]; 
}