ฉันต้องการสร้าง GUID / UUID บน iPhone และ iPad
ความตั้งใจที่จะสามารถสร้างคีย์สำหรับข้อมูลแบบกระจายที่ไม่ซ้ำกันทั้งหมด มีวิธีทำเช่นนี้กับ iOS SDK หรือไม่?
ฉันต้องการสร้าง GUID / UUID บน iPhone และ iPad
ความตั้งใจที่จะสามารถสร้างคีย์สำหรับข้อมูลแบบกระจายที่ไม่ซ้ำกันทั้งหมด มีวิธีทำเช่นนี้กับ iOS SDK หรือไม่?
คำตอบ:
[[UIDevice currentDevice] uniqueIdentifier]
ส่งคืน ID เฉพาะของ iPhone ของคุณ
แก้ไข:
-[UIDevice uniqueIdentifier]
ขณะนี้เลิกใช้งานแล้วและแอพกำลังถูกปฏิเสธจาก App Store เพื่อใช้งาน วิธีการด้านล่างเป็นวิธีที่ต้องการในขณะนี้
หากคุณต้องการสร้าง UUID หลายอันให้ใช้วิธีนี้ (กับ ARC):
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
แก้ไข: ม.ค. , 29 2014: หากคุณกำหนดเป้าหมายเป็น iOS 6 หรือใหม่กว่าตอนนี้คุณสามารถใช้วิธีที่ง่ายกว่านี้มาก:
NSString *UUID = [[NSUUID UUID] UUIDString];
นี่คือรหัสง่ายๆที่ฉันใช้สอดคล้องกับ ARC
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
ใน iOS 6 คุณสามารถใช้:
NSUUID *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];
รายละเอียดเพิ่มเติมในเอกสารประกอบของ Apple
การตรวจสอบเอกสารประกอบสำหรับนักพัฒนา Apple ฉันพบว่าวัตถุCFUUIDนั้นมีอยู่ใน iPhone OS 2.0 และใหม่กว่า
ในสวิฟต์ :
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
เทคนิคที่ง่ายที่สุดคือการใช้งาน ดูการอ้างอิงคลาสNSProcessInfo
ในSwift 3.0
var uuid = UUID().uuidString
ฉันได้อัปโหลดคลาส Guid ที่ง่ายและรวดเร็วสำหรับ ObjC ที่นี่: obj-c GUID
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
มันสามารถแยกไปและกลับจากรูปแบบสตริงที่หลากหลายเช่นกัน