Tôi muốn có thể tạo GUID / UUID trên iPhone và iPad.
Mục đích là có thể tạo các khóa cho dữ liệu phân tán, tất cả đều duy nhất. Có cách nào để làm điều này với SDK iOS không?
Tôi muốn có thể tạo GUID / UUID trên iPhone và iPad.
Mục đích là có thể tạo các khóa cho dữ liệu phân tán, tất cả đều duy nhất. Có cách nào để làm điều này với SDK iOS không?
Câu trả lời:
[[UIDevice currentDevice] uniqueIdentifier]
Trả về ID duy nhất của iPhone của bạn.
EDIT:
-[UIDevice uniqueIdentifier]
hiện không được chấp nhận và các ứng dụng đang bị từ chối khỏi App Store vì sử dụng nó. Phương pháp dưới đây bây giờ là phương pháp ưa thích.
Nếu bạn cần tạo một số UUID, chỉ cần sử dụng phương pháp này (với ARC):
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
EDIT: Jan, 29 2014: Nếu bạn đang nhắm mục tiêu iOS 6 trở lên, giờ đây bạn có thể sử dụng phương pháp đơn giản hơn nhiều:
NSString *UUID = [[NSUUID UUID] UUIDString];
Đây là mã đơn giản tôi đang sử dụng, tuân thủ ARC.
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
Trong iOS 6, bạn có thể dễ dàng sử dụng:
NSUUID *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];
Thêm chi tiết trong Tài liệu của Apple
Trong Swift :
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
Kỹ thuật đơn giản nhất là sử dụng NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
. Xem tham chiếu lớp NSProcessInfo .
Tôi đã tải lên bản triển khai đơn giản nhưng nhanh chóng của lớp Guid cho ObjC tại đây: obj-c GUID
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
Nó có thể phân tích cú pháp đến và từ các định dạng chuỗi khác nhau.