Cách lấy UUID trong mục tiêu c, giống như trong Java UUID được sử dụng để tạo các số ngẫu nhiên duy nhất đại diện cho giá trị 128 bit.
Cách lấy UUID trong mục tiêu c, giống như trong Java UUID được sử dụng để tạo các số ngẫu nhiên duy nhất đại diện cho giá trị 128 bit.
Câu trả lời:
Thử:
CFUUIDRef udid = CFUUIDCreate(NULL);
NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);
CẬP NHẬT:
Kể từ iOS 6, có một cách dễ dàng hơn để tạo UUID . Và như thường lệ, có nhiều cách để làm điều đó:
Tạo chuỗi UUID:
NSString *uuid = [[NSUUID UUID] UUIDString];
Tạo UUID:
[NSUUID UUID]; // which is the same as..
[[NSUUID] alloc] init];
Tạo một đối tượng thuộc loại NSConcreteUUID
và có thể dễ dàng truyền đến NSString
và trông giống như sau:BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE
LƯU Ý từ Tài liệu:
Lưu ý: Lớp NSUUID không được bắc cầu miễn phí với CFUUIDRef của CoreFoundation. Sử dụng chuỗi UUID để chuyển đổi giữa CFUUID và NSUUID, nếu cần. Hai đối tượng NSUUID không được đảm bảo có thể so sánh được theo giá trị con trỏ (như CFUUIDRef); sử dụng isEqual: để so sánh hai phiên bản NSUUID.
CFUUIDRef udid
có lẽ nên được CFUUIDRef uuid
để tránh nhầm lẫn tiềm năng của UDID (Unique Device Identifier) với UUID (Universally Unique Identifier)
Phiên bản Swift của câu trả lời Raptor :
let uuid = NSUUID().UUIDString
+ (NSString *)uniqueFileName
{
CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
CFRelease(theUniqueString);
return [(NSString *)string autorelease];
}
-(NSString*) myUUID()
{
CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
NSString *guid = (__bridge NSString *)newUniqueIDString;
CFRelease(newUniqueIDString);
CFRelease(newUniqueID);
return([guid lowercaseString]);
}
bạn có thể sử dụng CFUUID cho phiên bản iOS 5 trở xuống và NSUUID cho iOS 6 và 7. Để đảm bảo an toàn hơn, bạn có thể lưu trữ UUID của mình trong chuỗi khóa
- (NSString*)generateGUID{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [NSString stringWithFormat:@"%@", string];
}
Đối với Swift 5.0, sử dụng cái này,
let uuidRef = CFUUIDCreate(nil)
let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
let uuid = uuidStringRef as String? ?? ""