Генерация UUID на iOS из Swift

296

В моем приложении IOS Swift я хочу , чтобы генерировать случайный UUID ( GUID ) строк для использования в качестве ключа таблицы, и этот фрагмент кода появляется на работе:

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

Это безопасно?

Или, возможно, есть лучший (рекомендуемый) подход?

zacjordaan
источник
5
Вы также можете использовать let uuid = NSUUID.UUID (). UUIDString
Yatheesha BL
Взгляните на stackoverflow.com/questions/3773776/…
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 и выше.

Джеймс Фрост
источник
18

Для Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()
Джелил Бозкурт
источник
3
Кладбище придирчиво, но я не знаю, почему строчный UUID предпочтительнее обычного UUID.
Алекс Корнхаузер
13

В Swift 3 многие Foundationтипы отбросили префикс «NS», поэтому вы можете получить к нему доступ UUID().uuidString.

Скотт Х
источник
8

Также вы canиспользуете его lowercaseниже

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

Вывод

68b696d7-320b-4402-A412-d9cee10fc6a3

Спасибо !

SwiftDeveloper
источник
1
Спасибо. это сейчасNSUUID().uuidString.lowercased()
Патрик Дура
4
Какая польза от использования таких строчных букв?
Люк Станьер
Возможно, это более приятно для глаз, чем прописные буквы?
tgunr
5

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

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

Каждый раз будет генерироваться новый:

let uuid = UUID().uuidString
print(uuid)
iAleksandr
источник