2012-01-11 3 views
1

목표 C에서 고유 ID를 얻는 방법 내 세션에 대한 고유 ID를 생성하려고합니다. & 다음에 서버 호출이 발생할 때마다 ID를 생성합니다. 이 ID는 고유해야합니다.Objective C에서 고유 ID 생성

거대한 고유 ID (4FE9D00C-531E-45E8-B10E-11968ACC36E9)를 제공하는 CFUUID 클래스를 사용해 보았습니다. 더 작은 크기의 고유 ID가 필요합니다.

단서가 있습니까?

+1

왜 더 짧아야합니까? 그것이 독특하다는 것을 확실히하기 위해 그것은 꽤 길 필요가 있습니다. –

+0

이 문자열을 거대한 것으로 만드는 요청 ID로 세션 ID를 추가해야합니다. 추적 목적으로이 문자열을 서버에 로깅합니다. – Abhinav

+0

더 짧아지기를 원하십니까? 아니면 고유해야 할 필요가 있습니까? –

답변

6

guid (shear 조합 별)는 고유 한 ID를 생성합니다. 원하는 문자가 적은 경우 한 가지 옵션은 guid를 base64 인코딩하는 것입니다.

540c2d5f-a9ab-4414-bd36-9999f5388773 

이되다 : 즉, 문자 대신 16 당 64 개의 가능성 (0-9, AF)

이 가능

Xy0MVKupFES9NpmZ9TiHcw 

예를 들어, (비록 C 번호) http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx

여기에 목표 -c 인 코드/디코드 (look @ Mike Ho post)의 SO 게시물이 있습니다.

How do I do base64 encoding on iphone-sdk?

+0

확인. 이것을 인코딩하는 방법을 알려주시겠습니까? – Abhinav

+0

방금 ​​일부 링크를 추가했습니다. 하나는 객관적입니다. base64 인코딩/디코딩에 대한 C 게시물 – bryanmac

+0

S.O. 링크 ... – bryanmac

0

이 내 질문도 있었고, 나는 대답을 좋아하지만, 나는 코드가 다 여기 수 있도록하고자, 나는이 오래 알아,하지만 어쩌면 도움이 될 수있는 사람 :

// DataWithLength is a byte size of UUID. So 32 bytes = 256 bits string 
- (NSString*)generateSecureUUID { 

    NSMutableData *data = [NSMutableData dataWithLength:32]; 

    int result = SecRandomCopyBytes(NULL, 32, data.mutableBytes); 

    NSAssert(result == 0, @"Error generating random bytes: %d", errno); 

    NSString *base64EncodedData = [data base64EncodedStringWithOptions:0]; 

    return base64EncodedData; 
} 
0

당신은 다음

1

CFUUIDRef udidCFUUIDRef = CFUUIDCreate(NULL); 
    NSString *UUIDString_token_name = (NSString *) CFBridgingRelease(CFUUIDCreateString(NULL, udidCFUUIDRef)); 

2

중 하나를 시도 할 수 있습니다