Jak uzyskać UUID w celu c, podobnie jak w Javie UUID służy do generowania unikalnych liczb losowych, które reprezentują wartość 128-bitową.
Jak uzyskać UUID w celu c, podobnie jak w Javie UUID służy do generowania unikalnych liczb losowych, które reprezentują wartość 128-bitową.
Odpowiedzi:
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.
CFUUIDRef udidprawdopodobnie powinno być w CFUUIDRef uuidcelu uniknięcia potencjalnego pomylenia UDID (Unique Device Identifier) z UUID (Universally Unique Identifier)
+ (NSString *)uniqueFileName
{
CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
CFRelease(theUniqueString);
return [(NSString *)string autorelease];
}
-(NSString*) myUUID()
{
CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
NSString *guid = (__bridge NSString *)newUniqueIDString;
CFRelease(newUniqueIDString);
CFRelease(newUniqueID);
return([guid lowercaseString]);
}
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
- (NSString*)generateGUID{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [NSString stringWithFormat:@"%@", string];
}
W przypadku Swift 5.0 użyj tego,
let uuidRef = CFUUIDCreate(nil)
let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
let uuid = uuidStringRef as String? ?? ""