So generieren Sie eine UUID in ios

Antworten:

174

Versuchen:

CFUUIDRef udid = CFUUIDCreate(NULL);
NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);

AKTUALISIEREN:

Ab iOS 6 gibt es eine einfachere Möglichkeit, UUID zu generieren . Und wie immer gibt es mehrere Möglichkeiten:

Erstellen Sie eine UUID-Zeichenfolge:

NSString *uuid = [[NSUUID UUID] UUIDString];

Erstellen Sie eine UUID:

[NSUUID UUID]; // which is the same as..
[[NSUUID] alloc] init]; 

Erstellt ein Objekt vom Typ, NSConcreteUUIDdas leicht umgewandelt werden kann NSString, und sieht folgendermaßen aus:BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE

HINWEIS aus der Dokumentation:

Hinweis: Die NSUUID-Klasse ist nicht gebührenfrei mit CFUUIDRef von CoreFoundation verbunden. Verwenden Sie bei Bedarf UUID-Zeichenfolgen, um zwischen CFUUID und NSUUID zu konvertieren. Es ist nicht garantiert, dass zwei NSUUID-Objekte durch den Zeigerwert vergleichbar sind (wie dies bei CFUUIDRef der Fall ist). Verwenden Sie isEqual, um zwei NSUUID-Instanzen zu vergleichen.

Raubvogel
quelle
6
Wenn Sie iOS 6 verwenden, können Sie NSUUID verwenden: NSString * uuid = [[NSUUID UUID] UUIDString];
Eli Burke
2
in Zeile 1 CFUUIDRef udidsollte wahrscheinlich sein CFUUIDRef uuid, um eine mögliche Verwechslung von UDID (Unique Device Identifier) ​​mit UUID (Universally Unique Identifier) ​​zu vermeiden
CgodLEY
8

Schnelle Version von Raptors Antwort :

let uuid = NSUUID().UUIDString
Melvin
quelle
6
+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}
Bergasmen
quelle
Sie sollten den Code wirklich nicht ohne Erklärung lassen, egal wie einfach er ist
Sirenen
Ähm, ich bin mir nicht sicher, warum Sie meine spezielle Antwort ausgewählt haben, um eineinhalb Jahre später XD zu kommentieren.
Bergasms
Ich wusste nicht, dass es 1,5 Jahre alt war. Na ja, es funktioniert aber gut. :)
Sirenen
3
-(NSString*) myUUID()
{
    CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
    NSString *guid = (__bridge NSString *)newUniqueIDString;
    CFRelease(newUniqueIDString);
    CFRelease(newUniqueID);
    return([guid lowercaseString]);
}
Dominic Sander
quelle
1

Sie können CFUUID für iOS 5 oder eine niedrigere Version und NSUUID für iOS 6 und 7 verwenden. Um die Sicherheit zu erhöhen, können Sie Ihre UUID im Schlüsselbund speichern

Veeru Sharma
quelle
0
- (NSString*)generateGUID{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];
}
Sargis
quelle
1
Nur-Code-Antworten sind für die Community nicht hilfreich. Bitte schauen Sie, wie zu
antworten
-1

Verwenden Sie für Swift 5.0 Folgendes:

    let uuidRef = CFUUIDCreate(nil)
    let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
    let uuid = uuidStringRef as String? ?? ""
Sureshkumar Linganathan
quelle