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.