Chcę mieć możliwość utworzenia GUID / UUID na iPhonie i iPadzie.
Chodzi o to, aby móc tworzyć klucze dla rozproszonych danych, które są unikalne. Czy można to zrobić za pomocą zestawu SDK dla systemu iOS?
Chcę mieć możliwość utworzenia GUID / UUID na iPhonie i iPadzie.
Chodzi o to, aby móc tworzyć klucze dla rozproszonych danych, które są unikalne. Czy można to zrobić za pomocą zestawu SDK dla systemu iOS?
Odpowiedzi:
[[UIDevice currentDevice] uniqueIdentifier]
Zwraca unikalny identyfikator telefonu iPhone.
EDYCJA:
-[UIDevice uniqueIdentifier]
jest już przestarzałe, a aplikacje są odrzucane z App Store za korzystanie z niej. Poniższa metoda jest teraz preferowanym podejściem.
Jeśli chcesz utworzyć kilka UUID, po prostu użyj tej metody (z ARC):
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
EDYCJA: 29 stycznia 2014: Jeśli celujesz w iOS 6 lub nowszy, możesz teraz użyć znacznie prostszej metody:
NSString *UUID = [[NSUUID UUID] UUIDString];
Oto prosty kod, którego używam, zgodny z ARC.
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
W iOS 6 możesz łatwo używać:
NSUUID *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];
Więcej szczegółów w dokumentacji Apple
W Swift :
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
Najprostszą techniką jest użycie NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
. Zobacz odwołanie do klasy NSProcessInfo .
Przesłałem tutaj moją prostą, ale szybką implementację klasy Guid dla ObjC: GUID obj-c
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
Może parsować do iz różnych formatów łańcuchów.