Створіть 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, правда?
Кайл Редфіарн

4
Станом на Xcode 8 (бета), iOS 10 та Swift 3, це було перейменовано наUUID().uuidString
califrench

Ви хочете додати це до відповіді?
Ахмед Аль Хафуд

1
Привіт, я використовував цей метод UUID (). UuidString, але, здається, повертає різні рядки щоразу, коли я його використовую, я хочу, щоб це було 1 значення лише для програми, яку я встановлюю. Будь-яке розуміння?
nerezza

28

Ви також можете просто скористатися API NSUUID :

let uuid = NSUUID()

Якщо ви хочете повернути значення рядка, ви можете використовувати uuid.UUIDString.

Зауважте, що NSUUIDце доступно від iOS 6 і новіших версій.



13

Для Swift 3 багато Foundationтипів видалили префікс 'NS', тож ви отримали доступ до нього UUID().uuidString.


8

Також ви canвикористовуєте його lowercaseнижче

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

Вихідні дані

68b696d7-320b-4402-a412-d9cee10fc6a3

Дякую !


1
Дякую. це заразNSUUID().uuidString.lowercased()
Патрік Дура

4
Яка користь від використання такого малого регістру?
Люк Станьєр

Можливо, це приємніше оці, ніж великі регістри?
tgunr

5

Кожного разу буде створено те саме:

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

Кожен раз, коли буде створено нове:

let uuid = UUID().uuidString
print(uuid)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.