Генерация 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

Вы также можете просто использовать NSUUID API:

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.