Tạo UUID trên iOS từ Swift


296

Trong ứng dụng iOS Swift của tôi, tôi muốn tạo các chuỗi UUID ( GUID ) ngẫu nhiên để sử dụng làm khóa bảng và đoạn mã này dường như hoạt động:

let uuid = CFUUIDCreateString(nil, CFUUIDCreate(nil))

Cái này có an toàn không?

Hoặc có lẽ có một cách tiếp cận (khuyến nghị) tốt hơn?


5
Bạn cũng có thể sử dụng let uuid = NSUUID.UUID (). UUIDString
Yeditesha BL


1
Thay vì chỉnh sửa của bạn, xin vui lòng chấp nhận một trong những câu trả lời. Vì bạn đang làm theo cách @AhemdAlHafoudh đề xuất, tôi khuyên bạn nên chấp nhận câu trả lời của anh ấy.
DarkDust

À, hiểu rồi Cảm ơn ... đã xong.
zacjordaan

Câu trả lời:


627

Hãy thử cái này:

let uuid = NSUUID().uuidString
print(uuid)

Swift 3/4/5

let uuid = UUID().uuidString
print(uuid)

6
Trong XCode 6.1, tôi đã tìm thấy lỗi này: 'UUID ()' là không thể tránh khỏi: sử dụng đối tượng xây dựng 'NSUUID ()'. Chúng ta nên đổi nó thành NSUUID (). UUIDString
ohyes

Gợi ý trên không khác gì gọi NSUUID.init().UUIDString, phải không?
Kyle Redfearn

4
Kể từ Xcode 8 (beta), iOS 10 và Swift 3, điều này đã được đổi tên thànhUUID().uuidString
califbler

Tâm thêm điều này vào câu trả lời?
Ahmed Al Hafoudh

1
Xin chào Tôi đã sử dụng phương thức này UUID (). UuidString nhưng dường như trả về chuỗi khác nhau mỗi lần tôi sử dụng, tôi muốn nó chỉ là 1 giá trị cho ứng dụng mà tôi cài đặt. Bất kỳ cái nhìn sâu sắc?
nerezza

28

Bạn cũng có thể sử dụng API NSUUID :

let uuid = NSUUID()

Nếu bạn muốn lấy lại giá trị chuỗi, bạn có thể sử dụng uuid.UUIDString.

Lưu ý rằng NSUUIDcó sẵn từ iOS 6 trở lên.


18

Đối với Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()

3
Graveyard nitpick ở đây nhưng tôi không biết tại sao UUID chữ thường lại thích hợp hơn UUID thông thường.
Alex Kornhauser

13

Đối với Swift 3, nhiều Foundationloại đã bỏ tiền tố 'NS', vì vậy bạn sẽ truy cập nó bằng cách UUID().uuidString.


8

Ngoài ra, bạn cansử dụng nó lowercasedưới đây

let uuid = NSUUID().UUIDString.lowercaseString
print(uuid)

Đầu ra

68b696d7-320b-4402-a412-d9cee10fc6a3

Cảm ơn bạn !


1
Cảm ơn. bây giờNSUUID().uuidString.lowercased()
Patrick Dura

4
Lợi ích của việc sử dụng chữ thường như thế này là gì?
Luke Stanyer

Có lẽ nó dễ chịu cho mắt hơn chữ hoa?
tgunr

5

Mỗi lần giống nhau sẽ được tạo ra:

if let uuid = UIDevice.current.identifierForVendor?.uuidString {
    print(uuid)
}

Mỗi khi một cái mới sẽ được tạo ra:

let uuid = UUID().uuidString
print(uuid)
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.