Jak wygenerować UUID w iOS

Odpowiedzi:

175

Próbować:

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

AKTUALIZACJA:

Od iOS 6 jest łatwiejszy sposób generowania UUID . I jak zwykle można to zrobić na wiele sposobów:

Utwórz ciąg UUID:

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

Utwórz UUID:

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

Tworzy obiekt typu NSConcreteUUIDi może być łatwo rzutowany NSString, i wygląda następująco:BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE

UWAGA z Dokumentacji:

Uwaga: klasa NSUUID nie jest bezpłatna połączona z CFUUIDRef firmy CoreFoundation. W razie potrzeby użyj ciągów UUID, aby przekonwertować między CFUUID i NSUUID. Nie ma gwarancji, że dwa obiekty NSUUID będą porównywalne pod względem wartości wskaźnika (tak jak CFUUIDRef); use isEqual: aby porównać dwa wystąpienia NSUUID.

Raptor
źródło
6
Jeśli używasz iOS 6, możesz użyć NSUUID: NSString * uuid = [[NSUUID UUID] UUIDString];
Eli Burke,
2
on line 1, CFUUIDRef udidprawdopodobnie powinno być w CFUUIDRef uuidcelu uniknięcia potencjalnego pomylenia UDID (Unique Device Identifier) ​​z UUID (Universally Unique Identifier)
CgodLEY
9

Szybka wersja odpowiedzi Raptora :

let uuid = NSUUID().UUIDString
Melvin
źródło
6
+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}
Bergasms
źródło
Naprawdę nie powinieneś po prostu zostawiać kodu bez wyjaśnienia, bez względu na to, jak proste jest to
Sirens
Errr, nie jestem pewien, dlaczego wybrałeś moją konkretną odpowiedź do komentarza półtora roku później XD.
Bergasms,
Nie zdawałem sobie sprawy, że ma 1,5 roku .. No cóż, działa ładnie .. :)
Sirens
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
źródło
1

możesz użyć CFUUID dla iOS 5 lub niższej wersji i NSUUID dla iOS 6 i 7. Aby uczynić go bezpieczniejszym, możesz przechowywać swój UUID w pęku kluczy

Veeru Sharma
źródło
0
- (NSString*)generateGUID{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];
}
Sargis
źródło
1
Odpowiedzi zawierające tylko kod nie są przydatne dla społeczności. Proszę spojrzeć na Jak odpowiedzieć
JimHawkins
-1

W przypadku Swift 5.0 użyj tego,

    let uuidRef = CFUUIDCreate(nil)
    let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
    let uuid = uuidStringRef as String? ?? ""
Sureshkumar Linganathan
źródło