iOS – 将多个图像保存到“文档”文件夹

我有这段代码将代码保存到“文档”文件夹中。

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

我正在寻找一种能够保存多个图像的方法,因为这个保存了savedImage.png名字。

我不介意在谷歌或任何其他地方寻找它,但我需要知道它是什么,因为看错了关键字真的延误了世界:-)

干杯

您需要更改您在第三行添加到图像documentsDirectorypath的文件名。 每次你需要使用一个尚未使用的不同的名字。 NSFileManager有方法来查看一个文件是否存在,所以你可以构造一个文件名,然后testing它是否存在于这个位置,如果是的话,增加你的重复计数并尝试下一个。

如果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 ) 

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

如果使用当前date时间保存文件,则不必担心同名覆盖问题

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

你可以每次创build一个新的文件来做到这一点。

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"YOURiMAGEfILE.IMAGEeXTENSION"]; NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath: path]) { path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"YOURiMAGEfILE.IMAGEeXTENSION] ]; } 

然后你可以在创build的文件上执行你的上述操作。

希望它能帮助你为我工作!

 if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { let i = Int(arc4random()) let str = String(i).appending(".png") let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(str) print(paths) let imageData = UIImagePNGRepresentation(image) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) } else{ print("error") }