iOS - 将多个图像保存到Documents文件夹

jwk*_*knz 3 camera ios nsdocumentdirectory

我有这段代码将代码保存到Documents文件夹.

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,        NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *savedImagePath = [documentsDirectory  stringByAppendingPathComponent:@"savedImage.png"];
    UIImage *image = imageView.image; // imageView is my image from camera
    NSData *imageData = UIImagePNGRepresentation(image);
    [imageData writeToFile:savedImagePath atomically:NO]; 
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种能够保存多个图像的方法,因为这样可以保留写入savedImage.png名称.

我不介意在谷歌或其他任何地方寻找它,但我需要知道它被称为什么,因为用错误的关键词查找真的推迟了世界:-)

干杯

Dad*_*Dad 7

您需要更改要附加到第三行图像documentsDirectory路径的文件名.每次您需要使用尚未使用的其他名称时.NSFileManager具有查看文件是否存在的方法,因此您可以构造文件名,然后测试它是否存在于该位置,如果存在,则递增重复计数并尝试下一个.

if num是一个整数你定义的地方并保持不变,这样你就知道你认为你使用的最后一个(并且你已经在某处初始化为1).

// your code to get the directory here, as above

NSFileManager *fm = [NSFileManager ...]

do {
   savedImagePath = [documentsDirectory stringByAppendingPathComponent: 
        [NSString stringWithFormat: @"%@-%d.png", @"savedImage", num]];
   num += 1; // for next time

  if ( ![fm fileExistsAtPath: savedImagePath] )
  {
      // save your image here using savedImagePath
      exit;
  }
} while ( //some kind of test for maximum tries/time or whatever )
Run Code Online (Sandbox Code Playgroud)

你将不得不查找语法来获得一个NSFileManager实例和确切的文件存在方法签名,但这是它的要点.


War*_*shi 5

如果使用当前日期时保存文件,则无需担心同名覆盖问题

-(NSString*)getCurrentDateTimeAsNSString
{
    NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
    [format setDateFormat:@"yyyyMMddHHmmss"];
    NSDate *now = [NSDate date];
    NSString *retStr = [format stringFromDate:now];
    [format release];

    return retStr;
}
Run Code Online (Sandbox Code Playgroud)