Buat UUID di iOS dari Swift

296

Di aplikasi iOS Swift saya, saya ingin membuat string UUID ( GUID ) acak untuk digunakan sebagai kunci tabel, dan potongan ini tampaknya berfungsi:

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

Apakah ini aman?

Atau mungkin ada pendekatan yang lebih baik (disarankan)?

zacjordaan
sumber
5
Anda juga dapat menggunakan let uuid = NSUUID.UUID (). UUIDString
Yatheesha BL
1
Alih-alih hasil edit Anda, terimalah salah satu jawabannya. Karena Anda melakukannya dengan cara yang diusulkan @AhemdAlHafoudh, saya sarankan Anda menerima jawabannya.
DarkDust
Ah, mengerti. Terima kasih ... sudah selesai.
zacjordaan

Jawaban:

627

Coba yang ini:

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

Cepat 3/4/5

let uuid = UUID().uuidString
print(uuid)
Ahmed Al Hafoudh
sumber
6
Dalam XCode 6.1, saya menemukan kesalahan ini: 'UUID ()' tidak dapat dihindari: gunakan konstruksi objek 'NSUUID ()'. Kita harus mengubahnya ke NSUUID (). UUIDString
ohyes
Saran di atas tidak berbeda dengan menelepon NSUUID.init().UUIDString, bukan?
Kyle Redfearn
4
Pada Xcode 8 (beta), iOS 10 dan Swift 3, ini telah diubah namanya menjadiUUID().uuidString
califrench
Pikiran menambahkan ini ke jawabannya?
Ahmed Al Hafoudh
1
Hai Saya menggunakan metode ini UUID () .UuidString tetapi tampaknya mengembalikan string yang berbeda setiap kali saya menggunakannya, saya ingin itu menjadi 1 nilai hanya untuk aplikasi yang saya instal. Adakah wawasan?
nerezza
28

Anda juga bisa menggunakan API NSUUID :

let uuid = NSUUID()

Jika Anda ingin mendapatkan kembali nilai string, Anda dapat menggunakannya uuid.UUIDString .

Catatan yang NSUUIDtersedia dari iOS 6 dan lebih tinggi.

James Frost
sumber
18

Untuk Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()
Celil Bozkurt
sumber
3
Nitpick makam di sini tapi saya tidak tahu mengapa huruf kecil huruf lebih disukai daripada UUID biasa.
Alex Kornhauser
13

Untuk Swift 3, banyak Foundationjenis telah menjatuhkan awalan 'NS', jadi Anda akan mengaksesnya UUID().uuidString.

Scott H
sumber
8

Anda juga canmenggunakannya lowercasedi bawah ini

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

Keluaran

68b696d7-320b-4402-a412-d9cee10fc6a3

Terima kasih !

Pengembang Swift
sumber
1
Terima kasih. sekarangNSUUID().uuidString.lowercased()
Patrick Dura
4
Apa manfaat menggunakan huruf kecil seperti ini?
Luke Stanyer
Mungkin lebih enak dipandang daripada huruf besar?
tgunr
5

Setiap kali hal yang sama akan dihasilkan:

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

Setiap kali yang baru akan dihasilkan:

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