Generieren Sie eine UUID unter iOS aus Swift

296

In meiner iOS Swift-App möchte ich zufällige UUID- Zeichenfolgen ( GUID ) zur Verwendung als Tabellenschlüssel generieren. Dieses Snippet scheint zu funktionieren:

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

Ist das sicher?

Oder gibt es vielleicht einen besseren (empfohlenen) Ansatz?

zacjordaan
quelle
5
Sie können auch let uuid = NSUUID.UUID () verwenden. UUIDString
Yatheesha BL
Werfen
Yatheesha BL
1
Anstelle Ihrer Bearbeitung akzeptieren Sie bitte eine der Antworten. Da Sie es so machen, wie es @AhemdAlHafoudh vorgeschlagen hat, schlage ich vor, dass Sie seine Antwort akzeptieren.
DarkDust
Ah, verstanden. Danke ... fertig.
Zacjordaan

Antworten:

627

Probier diese:

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

Swift 3/4/5

let uuid = UUID().uuidString
print(uuid)
Ahmed Al Hafoudh
quelle
6
In XCode 6.1 habe ich diesen Fehler gefunden: 'UUID ()' ist nicht verfügbar: Verwenden Sie die Objektkonstruktion 'NSUUID ()'. Wir sollten es in NSUUID () ändern. UUIDString
ohyes
Der obige Vorschlag unterscheidet sich nicht vom Anrufen NSUUID.init().UUIDString, oder?
Kyle Redfearn
4
Ab Xcode 8 (Beta), iOS 10 und Swift 3 wurde dies inUUID().uuidString
Califrench
Möchten Sie dies zur Antwort hinzufügen?
Ahmed Al Hafoudh
1
Hallo, ich habe diese Methode UUID (). UuidString verwendet, aber sie scheint jedes Mal, wenn ich sie verwende, eine andere Zeichenfolge zurückzugeben. Ich möchte, dass sie nur für die von mir installierte App 1 Wert ist. Irgendein Einblick?
Nerezza
28

Sie können auch einfach die NSUUID- API verwenden:

let uuid = NSUUID()

Wenn Sie den Zeichenfolgenwert wieder herausholen möchten, können Sie verwenden uuid.UUIDString.

Beachten Sie, dass dies NSUUIDab iOS 6 verfügbar ist.

James Frost
quelle
18

Für Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()
Celil Bozkurt
quelle
3
Friedhof Nitpick hier, aber ich weiß nicht, warum UUID in Kleinbuchstaben einer normalen UUID vorzuziehen ist.
Alex Kornhauser
13

Bei Swift 3 haben viele FoundationTypen das Präfix 'NS' gelöscht, sodass Sie über darauf zugreifen können UUID().uuidString.

Scott H.
quelle
8

Auch Sie canverwenden es lowercaseunter unten

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

Ausgabe

68b696d7-320b-4402-a412-d9cee10fc6a3

Vielen Dank !

SwiftDeveloper
quelle
1
Vielen Dank. es ist jetztNSUUID().uuidString.lowercased()
Patrick Dura
4
Was ist der Vorteil einer solchen Verwendung von Kleinbuchstaben?
Luke Stanyer
Vielleicht ist es für das Auge angenehmer als Großbuchstaben?
tgunr
5

Jedes Mal wird dasselbe generiert:

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

Jedes Mal, wenn ein neues generiert wird:

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