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)?


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)

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.


18

Untuk Swift 4 ;

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

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.


8

Anda juga canmenggunakannya lowercasedi bawah ini

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

Keluaran

68b696d7-320b-4402-a412-d9cee10fc6a3

Terima kasih !


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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.