次のようなことができます。ここで、requestedNameはユーザーが選択したファイル名、はextensionファイルの拡張子、はファイルをbasePath保存しようとしているフォルダーです。
NSFileManager *fm = [NSFileManager defaultManager];
NSString * filename = requestedName;
if ([fm fileExistsAtPath:[basePath stringByAppendingPathComponent:requestedName]])
{
unsigned int counter = 1;
while ( [fm fileExistsAtPath: [basePath stringByAppendingPathComponent: filename]])
{
//NSLog(@"File already exists %@", filename);
NSURL *originalFilePath = [NSURL URLWithString:[kTempPath stringByAppendingPathComponent:filename]];
filename = [[NSString stringWithFormat: @"%@-%d",
[requestedName stringByDeletingPathExtension], counter]stringByAppendingPathExtension: extension];
counter ++;
NSURL *newFilePath = [NSURL URLWithString:[kTempPath stringByAppendingPathComponent:filename]];
[fm moveItemAtURL:originalFilePath toURL:newFilePath error:nil];
// just in case
if (counter > 512) break;
}
}
ファイルが存在しない場合は、NSFileManagerを使用してmoveItemAtURL、またはmoveItemAtPathNSFileManagerからファイルを正しい場所に移動します。