我正在撰写一个涉及上传图片的应用。我使用Amazon S3
来存储这些文件。一个问题是我需要为每个文件指定一个唯一的文件名。
在每台iOS设备上,我使用 arc4random_unique
功能生成随机数。
我的问题是,这种方法会导致跨多个设备重复吗?
因为据我所知,如果我使用rand()将时间作为种子,如果两个用户同时尝试上传图像,rand()
函数将产生完全相同的结果。
答案 0 :(得分:1)
NSString *GUID = [[NSString alloc]init];
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
GUID = (__bridge NSString *)string;
CFRelease(string);
return [GUID lowercaseString];
答案 1 :(得分:1)
如果您想拥有文件的唯一名称,那么可以使用UUID。
如果您使用的是iOS6及更高版本,则可以使用内置方法生成UUID:
NSString *uuidString = [[NSUUID UUID] UUIDString];
// Generates: 7E60066C-C7F3-438A-95B1-DDE8634E1072 for example
无需退到基金会,或担心过桥和ARC。