Cách tạo UUID trong iOS


Câu trả lời:


175

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 NSConcreteUUIDvà có thể dễ dàng truyền đến NSStringvà 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.


6
Nếu bạn đang sử dụng iOS 6, bạn có thể sử dụng NSUUID: NSString * uuid = [[NSUUID UUID] UUIDString];
Eli Burke

2
trên dòng 1, CFUUIDRef udidcó 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)
CgodLEY


6
+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}

Bạn thực sự không nên chỉ để lại mã mà không giải thích, bất kể như thế nào đơn giản nó là
Sirens

Errr, không chắc tại sao bạn lại chọn câu trả lời cụ thể của tôi để nhận xét về một năm rưỡi sau XD.
Bergasms

Tôi không nhận ra nó đã được 1,5 năm tuổi .. Ồ, mặc dù vậy, nó hoạt động rất tốt .. :)
Sirens

3
-(NSString*) myUUID()
{
    CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
    NSString *guid = (__bridge NSString *)newUniqueIDString;
    CFRelease(newUniqueIDString);
    CFRelease(newUniqueID);
    return([guid lowercaseString]);
}

1

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


0
- (NSString*)generateGUID{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];
}

1
Câu trả lời chỉ có mã không hữu ích cho cộng đồng. Hãy nhìn vào thế nào để trả lời
JimHawkins

-1

Đố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? ?? ""
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.