X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Categories%2FNSFileManager%2BUniqueNames.m;fp=Categories%2FNSFileManager%2BUniqueNames.m;h=c7eb76896bba00891d5a612823c14a83b234f376;hp=0000000000000000000000000000000000000000;hb=0064c1fbff36795885a9724081af2a17d83c20a3;hpb=56d825ba259066d847a9fc3f9c8c0c0a362a1507 diff --git a/Categories/NSFileManager+UniqueNames.m b/Categories/NSFileManager+UniqueNames.m new file mode 100644 index 0000000..c7eb768 --- /dev/null +++ b/Categories/NSFileManager+UniqueNames.m @@ -0,0 +1,31 @@ +// +// NSFileManager+UniqueNames.m +// Enjoyable +// +// Created by Joe Wreschnig on 3/7/13. +// +// + +#import "NSFileManager+UniqueNames.h" + +@implementation NSFileManager (UniqueNames) + +- (NSURL *)generateUniqueURLWithBase:(NSURL *)canonical { + // Punt for cases that are just too hard. + if (!canonical.isFileURL) + return canonical; + + NSString *trying = canonical.path; + NSString *dirname = [trying stringByDeletingLastPathComponent]; + NSString *basename = [trying.lastPathComponent stringByDeletingPathExtension]; + NSString *extension = trying.pathExtension; + int index = 1; + while ([self fileExistsAtPath:trying] && index < 10000) { + NSString *indexName = [NSString stringWithFormat:@"%@ (%d)", basename, index++]; + indexName = [indexName stringByAppendingPathExtension:extension]; + trying = [dirname stringByAppendingPathComponent:indexName]; + } + return [NSURL fileURLWithPath:trying]; +} + +@end