我正在尝试编写代码来为用户从 iOS 应用程序上传到服务器的图像生成全局唯一名称。名称应该是随机生成的,并且应该是唯一的,这样图像就不会被覆盖/替换。
这是我生成随机和唯一字符串的代码:
+ (NSString *)generateRandNameWithLength:(int)len
{
NSString *letters = [NSString stringWithFormat:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%@0123456789", [HJUtilities generateUniqueApId]];
NSMutableString *randomString = [NSMutableString stringWithCapacity: len];
for (int i=0; i<len; i++) {
[randomString appendFormat: @"%C", [letters characterAtIndex: arc4random() % [letters length]]];
}
return randomString;
}
在哪里:
+ (NSString *)generateUniqueApId
{
NSString *appId = (__bridge NSString *) CFUUIDCreateString (NULL, CFUUIDCreate(NULL));
return appId;
}
返回一个 UUID。
现在我不确定这是否是生成全局唯一字符串的正确代码。我不知道如何验证这一点以确保没有用户会覆盖另一个用户的图像。
注意:我使用 Amazon Web 服务进行存储。所有用户的所有图像都将使用一个通用存储桶。因此,它要求图像名称应该是唯一的。