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.


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


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

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

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


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

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? ?? ""
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.