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.