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.


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


6
+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}

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]);
}

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


0
- (NSString*)generateGUID{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];
}

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? ?? ""
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.