IPhoneとiPadでGUID/UUIDを作成できるようにしたい。
意図は、すべて一意の分散データのキーを作成できるようにすることです。 iOS SDKでこれを行う方法はありますか?
[[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];
以下は、ARCに準拠した、私が使用している簡単なコードです。
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
IOS 6では、次のものを簡単に使用できます。
NSUUID *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];
詳細は Appleのドキュメント
Apple開発者ドキュメントを確認すると、iPhone OS 2.0以降で CFUUID オブジェクトが利用可能であることがわかりました。
最も簡単な方法は、NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
を使用することです。 NSProcessInfo クラスリファレンスを参照してください。
In Swift:
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
In Swift 3.
var uuid = UUID().uuidString
ObjCのGuidクラスのシンプルで高速な実装をここにアップロードしました: obj-c GUID
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
同様に、さまざまな文字列形式を解析できます。