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.