2013-07-11 142 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]; 
}