สร้าง UUID บน iOS จาก Swift


296

ในแอป iOS Swift ของฉันฉันต้องการสร้างสตริงUUID ( GUID ) แบบสุ่มเพื่อใช้เป็นคีย์ตารางและข้อมูลโค้ดนี้ดูเหมือนว่าจะทำงาน:

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

ปลอดภัยไหม

หรืออาจจะมีวิธีที่ดีกว่า (แนะนำ)?


5
นอกจากนี้คุณยังสามารถใช้ let uuid = NSUUID.UUID () UUIDString
Yatheesha BL


1
แทนที่จะยอมรับการแก้ไขของคุณโปรดยอมรับหนึ่งในคำตอบ เมื่อคุณทำตามวิธีที่ @AhemdAlHafoudh เสนอฉันขอแนะนำให้คุณยอมรับคำตอบของเขา
DarkDust

อ่าเข้าใจแล้ว ขอบคุณ ... เสร็จแล้ว
zacjordaan

คำตอบ:


627

ลองอันนี้:

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

รวดเร็ว 3/4/5

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

6
ใน XCode 6.1 ฉันพบข้อผิดพลาดนี้: 'UUID ()' ไม่สามารถใช้งานได้: ใช้การสร้างวัตถุ 'NSUUID ()' เราควรเปลี่ยนเป็น NSUUID () UUIDString
ohyes

คำแนะนำข้างต้นไม่แตกต่างจากการโทรNSUUID.init().UUIDStringใช่ไหม
Kyle Redfearn

4
ในฐานะของ Xcode 8 (เบต้า), iOS 10 และ Swift 3 สิ่งนี้ได้ถูกเปลี่ยนชื่อเป็นUUID().uuidString
califrench

คุณต้องการเพิ่มคำตอบลงในใจหรือไม่
Ahmed Al Hafoudh

1
สวัสดีฉันใช้วิธีนี้ UUID (). uuidString แต่ดูเหมือนว่าจะกลับสตริงที่แตกต่างกันทุกครั้งที่ฉันใช้มันฉันต้องการให้มันเป็น 1 ค่าสำหรับแอพที่ฉันติดตั้ง ความเข้าใจใด ๆ
nerezza

28

คุณสามารถใช้NSUUID API ได้เช่นกัน:

let uuid = NSUUID()

uuid.UUIDStringหากคุณต้องการที่จะได้รับกลับออกค่าสตริงคุณสามารถใช้

โปรดทราบว่าNSUUIDมีให้ตั้งแต่ iOS 6 ขึ้นไป



13

สำหรับสวิฟท์ 3 หลายFoundationชนิดได้ลดลง 'NS' UUID().uuidStringคำนำหน้าดังนั้นคุณจะเข้าถึงได้โดย


8

นอกจากนี้คุณcanใช้มันlowercaseภายใต้ด้านล่าง

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

เอาท์พุต

68b696d7-320b-4402-a412-d9cee10fc6a3

ขอบคุณ !


1
ขอบคุณ ได้แล้วNSUUID().uuidString.lowercased()
Patrick Dura

4
ประโยชน์ของการใช้ตัวพิมพ์เล็กเช่นนี้คืออะไร
ลุค Stanyer

บางทีมันอาจจะเป็นที่ชื่นชอบในสายตามากกว่าตัวพิมพ์ใหญ่?
tgunr

5

ทุกครั้งที่มีการสร้างเดียวกัน:

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

แต่ละครั้งจะมีการสร้างใหม่:

let uuid = UUID().uuidString
print(uuid)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.