iOS를 사용하여 GUID / UUID를 만드는 방법


207

iPhone 및 iPad에서 GUID / UUID를 만들 수 있기를 원합니다.

의도는 모두 고유 한 분산 데이터에 대한 키를 작성할 수 있도록하는 것입니다. iOS SDK로 이것을 수행하는 방법이 있습니까?


3
KeyChain을 사용하는 iOS 5 이상에서도 생성 된 UUID를 잃어 버리지 않도록하는 방법에 대한 기사가 있습니다. blog.onliquid.com/…
jasoares

답변:


323
[[UIDevice currentDevice] uniqueIdentifier]

iPhone의 고유 ID를 반환합니다.

편집하다: -[UIDevice uniqueIdentifier] 이제 더 이상 사용되지 않으며 App Store에서 앱을 거부하여 사용하고 있습니다. 아래 방법은 이제 선호되는 방법입니다.

여러 UUID를 작성해야하는 경우 ARC와 함께이 메소드를 사용하십시오.

+ (NSString *)GetUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  return (__bridge NSString *)string;
}

편집 : 2014 년 1 월 29 일 : iOS 6 이상을 대상으로하는 경우 훨씬 간단한 방법을 사용할 수 있습니다.

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

21
[[UIDevice currentDevice] uniqueIdentifier]는 iOS 5부터 더 이상 사용되지 않으며 Apple은 현재이를 사용하는 앱을 거부하고 있습니다 (2012 년 3 월 기준). 나머지 응답은 여전히 ​​정확합니다.
Gorm

13
이 질문을 잠시 동안 해왔으므로 원래 질문은 장치의 고유 식별자에 관한 것이 아니라 유용한 일반적인 고유 식별자를 얻는 것입니다.
Ryan McCuaig

12
이 ARC를 준수하려면 문자열 객체를 전송하고 자동 해제 호출을 제거해야합니다. 즉, 캐스트를 추가하십시오. NSString * string = (__bridge_transfer NSString *) CFUUIDCreateString (NULL, theUUID);
Paul de Lange

65
iOS 6부터는 다음을 사용할 수 있습니다. NSString * UUID = [[NSUUID UUID] UUIDString];
대칭

1
[[NSUUID UUID] UUIDString]을 사용하는 경우; iOS7 이상에서 Apple이 내 앱을 거부하지 않습니까?
Whoami

100

다음은 ARC를 준수하는 간단한 코드입니다.

+(NSString *)getUUID
{
    CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
    NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
    CFRelease(newUniqueId);

    return uuidString;
}

35
솔직히 이것은 받아 들일 수있는 대답이어야하며, 원래 질문은 GUID 또는 UUID 생성기를 요구했으며 모든 사람들은 전화의 UDID를 얻는 방법에 응답했습니다. UUID (Universally Unique Identifier)와 UDID (Unique Device Identifier)는 동일하지 않습니다.
Joe

1
다음은 직선입니다. NSString * UUID = [[NSUUID UUID] UUIDString];
Adeel

89

iOS 6에서는 다음을 쉽게 사용할 수 있습니다.

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

Apple의 설명서에 대한 자세한 내용


5
이것이 가장 간단한 솔루션입니다. iOS 6 이전에 지원할 필요가없는 경우이를 사용하십시오. 핵심 데이터 생성 영구 ID를 사용하고 있었지만 훨씬 좋습니다. +1
Sean

완벽 해, 고마워! 이 : 오늘 내 한 대답이다
justinhartman

시뮬레이터에서 앱을 실행할 때마다 변경됩니다.
Gajendra K Chauhan

46

Apple Developer 문서를 검토 한 결과 CFUUID 객체가 iPhone OS 2.0 이상에서 사용 가능 하다는 것을 알았 습니다.


23

에서 스위프트 :

var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")

22

가장 간단한 기술은 사용하는 것 NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]입니다. 참고 항목 NSProcessInfo의 클래스 참조하십시오.


8
프로세스의 고유 식별자를 반환합니다. GUID와 유사하지 않습니다. 문서에서 : "ID에는 호스트 이름, 프로세스 ID 및 타임 스탬프가 포함되어있어 네트워크에서 ID가 고유해야합니다"
Matt Spradley

당신이 옳을 수 있습니다. 실용적 한 라이너이며 아마도 CFUUID만큼 방탄하지는 않습니다. 더 엄격해야하는 사람은 CoreFoundation으로 넘어 가야합니다.
Ryan McCuaig


7

ObjC에 대한 Guid 클래스의 간단하지만 빠른 구현을 여기에 업로드했습니다. obj-c GUID

Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);

다양한 문자열 형식과의 구문 분석도 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.