211

iPhoneとiPadでGUID/UUIDを作成できるようにしたい。

目的は、すべてが一意である分散データのキーを作成できるようにすることです。iOS SDKでこれを行う方法はありますか?

4

8 に答える 8

324
[[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];
于 2009-01-09T09:35:28.280 に答える
100

これは、ARCに準拠した、私が使用している簡単なコードです。

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

    return uuidString;
}
于 2012-05-23T00:51:12.097 に答える
47

Apple Developer のドキュメントを確認したところ、iPhone OS 2.0 以降でCFUUIDオブジェクトを使用できることがわかりました。

于 2009-01-09T06:14:32.960 に答える
23

スウィフトでは:

var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
于 2014-11-30T23:07:53.453 に答える
22

最も簡単な方法は、 を使用することNSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]です。NSProcessInfoクラスのリファレンスを参照してください。

于 2009-03-03T21:48:33.003 に答える
7

ObjC の Guid クラスの単純だが高速な実装をここにアップロードしました: obj-c GUID

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

さまざまな文字列形式との間で解析することもできます。

于 2012-04-02T18:11:58.680 に答える