Gere um UUID no iOS a partir do Swift

296

No meu aplicativo iOS Swift, desejo gerar seqüências aleatórias de UUID ( GUID ) para serem usadas como chave de tabela, e esse snippet parece funcionar:

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

Isso é seguro?

Ou existe talvez uma abordagem melhor (recomendada)?

zacjordaan
fonte
5
Você também pode usar let uuid = NSUUID.UUID (). UUIDString
Yatheesha BL
Dê uma olhada em stackoverflow.com/questions/3773776/…
Yatheesha BL,
1
Em vez de sua edição, aceite uma das respostas. Como você está fazendo da maneira que @AhemdAlHafoudh propôs, sugiro que você aceite a resposta dele.
DarkDust
Ah, entendi. Obrigado ... pronto.
23414 zacjordaan

Respostas:

627

Tente este:

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

Swift 3/4/5

let uuid = UUID().uuidString
print(uuid)
Ahmed Al Hafoudh
fonte
6
No XCode 6.1, encontrei este erro: 'UUID ()' é inevitável: use a construção do objeto 'NSUUID ()'. Devemos alterá-lo para NSUUID (). UUIDString
ohyes
A sugestão acima não é diferente de ligar NSUUID.init().UUIDString, certo?
Kyle Redfearn
4
Como do Xcode 8 (beta), IOS 10 e Swift 3, este tiver sido mudado paraUUID().uuidString
califrench
Se importa de adicionar isso à resposta?
Ahmed Al Hafoudh
1
Oi, eu usei esse método UUID (). UuidString, mas parece retornar uma string diferente toda vez que a uso, quero que seja 1 valor apenas para o aplicativo que instalo. Alguma visão?
Nerezza
28

Você também pode usar a API NSUUID :

let uuid = NSUUID()

Se você deseja recuperar o valor da string, pode usar uuid.UUIDString.

Observe que NSUUIDestá disponível no iOS 6 e superior.

James Frost
fonte
18

Para Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()
Celil Bozkurt
fonte
3
Cemitério nitpick aqui, mas eu não sei por que UUID em minúsculas é preferível a um UUID regular.
Alex Kornhauser
13

Para o Swift 3, muitos Foundationtipos abandonaram o prefixo 'NS', então você o acessaria UUID().uuidString.

Scott H
fonte
8

Você também pode canusá-lo lowercaseabaixo

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

Resultado

68b696d7-320b-4402-a412-d9cee10fc6a3

Obrigado !

SwiftDeveloper
fonte
1
Obrigado. é agoraNSUUID().uuidString.lowercased()
Patrick Dura
4
Qual é o benefício de usar letras minúsculas como esta?
22718 Luke Stanyer #
Talvez seja mais agradável aos olhos do que maiúsculas?
tgunr 28/01/19
5

Cada vez que o mesmo será gerado:

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

Cada vez que um novo será gerado:

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