【问题标题】:Preventing Overwrite When Calling writeToFile:调用 writeToFile 时防止覆盖:
【发布时间】:2013-07-10 01:37:31
【问题描述】:

每次按下保存按钮时,我都会尝试将图像保存到磁盘。这是我正在使用的代码:

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

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

[pdfData writeToFile:documentDirectoryFilename atomically:YES];

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

【问题讨论】:

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

标签: ios objective-c cocoa-touch memory writetofile


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    或者您可以检查具有该名称的文件是否存在以及它是否不写入文件。然后根据需要更改名称,以便您拥有一份您可能尝试保存或未尝试保存的内容的副本。

    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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-13
      • 2018-06-27
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多