質問

.NETに相当する組み込み関数があります

Guid.NewGuid();

Cocoaの場合

私の希望は、一意の識別子を表す 550e8400-e29b-41d4-a716-446655440000 の行に沿って文字列を生成することです。

役に立ちましたか?

解決

UUIDは、Core FoundationでCFUUIDライブラリによって処理されます。探している関数は CFUUIDCreate

さらなる検索のためのFYI:これらは最も一般的にUUIDとして知られています。GUIDという用語はMicrosoftの世界以外ではあまり使われていません。あなたはその検索語でもっと運がいいかもしれません。

他のヒント

一部のコード:

文字列UUIDの場合、次のクラスメソッドでトリックを実行する必要があります。

+(NSString*)UUIDString {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [(NSString *)string autorelease];
}

本当に文字列ではなくバイトが必要な場合:

+(CFUUIDBytes)UUIDBytes {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID);
    CFRelease(theUUID);
    return bytes;
}

CFUUIDBytesは UUIDバイトの構造

少なくともMacOSX 10.5.xでは、コマンドラインツール" uuidgen"を使用できます。あなたの文字列を取得する  例:

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

このコマンドには、ヘッダースタイルで便利に生成するオプション-hdrもあります

詳細については、マンページを参照してください。

または uuidgen コマンドラインツールがあります。

10.8以降では、NSString * uuidString = [[NSUUID UUID] UUIDString];

も使用できます。

Wikipedia の記事と Core Foundation ページ。

10.3以降では、 [[NSProcessInfo processInfo] globallyUniqueString] 。ただし、この現在はUUIDを生成しますが、これは一度も実行されておらず、それを実行することも保証されていないため、一意の文字列だけでなく UUID が本当に必要な場合、CFUUIDを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top