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?


5
Sie können auch let uuid = NSUUID.UUID () verwenden. UUIDString
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)

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.


18

Für Swift 4 ;

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

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.


8

Auch Sie canverwenden es lowercaseunter unten

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

Ausgabe

68b696d7-320b-4402-a412-d9cee10fc6a3

Vielen Dank !


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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.