创建用于保存数据的唯一字符串

时间:2011-03-17 17:42:36

标签: iphone ios

我正在为iphone构建应用程序。我扫描iPod库并引入所有专辑封面。我需要一种创建唯一字符串的方法,这样当我将专辑封面保存到文档目录时,每个文件都有一个唯一的名称。有谁知道创建一个独特的字符串?提前谢谢。

3 个答案:

答案 0 :(得分:14)

我使用此代码:

+ (NSString *)getUniqueFilenameInFolder:(NSString *)folder forFileExtension:(NSString *)fileExtension {
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *existingFiles = [fileManager contentsOfDirectoryAtPath:folder error:nil];
    NSString *uniqueFilename;

    do {
        CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
        CFStringRef newUniqueIdString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);

        uniqueFilename = [[folder stringByAppendingPathComponent:(NSString *)newUniqueIdString] stringByAppendingPathExtension:fileExtension];

        CFRelease(newUniqueId);
        CFRelease(newUniqueIdString);
    } while ([existingFiles containsObject:uniqueFilename]);

    return uniqueFilename;
}

也许它有助于某人。 : - )

请记住,这会返回唯一文件的完整路径。您可能希望添加一些小的更改,只返回文件名。例如,如果你想在某个地方坚持它。

答案 1 :(得分:5)

您希望创建GUID或UUID,它是一个128位整数,其中包含与之关联的字符串。查看http://developer.apple.com/library/ios/#documentation/CoreFoundation/Reference/CFUUIDRef/Reference/reference.html

答案 2 :(得分:0)

我没有代码,但您可以从专辑封面生成MD5哈希码。这将接近一个独特的字符串。虽然这将是一个丑陋的字符串。