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)?


5
Você também pode usar let uuid = NSUUID.UUID (). UUIDString
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)

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.


18

Para Swift 4 ;

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

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.


8

Você também pode canusá-lo lowercaseabaixo

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

Resultado

68b696d7-320b-4402-a412-d9cee10fc6a3

Obrigado !


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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.