2011-09-21 19 views
4

ここにいくつかの問題があります。次のコードを使用して、私のアプリケーションでuuidを生成しています。UUIDをintとして格納する方法

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

このコードは、NSStringオブジェクトを返します。今度は、UUIDunsigned intとして保存します。どのような提案をしてください私はここでそれを行うことができますしてください。ありがとう。

+1

'UUID'を' unsigned int'として保存することはできません。前者は128ビット幅で、後者はiPhoneでわずか32ビットです。それはちょうど収まりません。なぜこれをやりたいのかについてもっと分かち合うと、私たちは手伝ってくれるかもしれません。 –

+1

uuidを数値形式で保存したい。文字列ではなく整数のようなもの。文字列形式の検索と比較には時間がかかりすぎます。可能ですか。 – Hadi

+0

いいえ、それはできません。 GUIDはすでに数値です。文字列に変換しないでください。 –

答えて

7

Wikipedia pageによると、UUIDは128ビット長です。あなたが扱える最大のint値は64ビットです。したがって、単にスペースがないので、intに格納することはできないと言います。 .UUIDString

テイク文字列の.hashプロパティを使用して文字列に

+0

文字列の検索と比較に時間がかかりすぎます。それ以外のタイプに適応することは可能ですか。 – Hadi

+0

私はそれが信じています。あなたは、UUIDの一部を含む構造体を作成し、それを扱う比較関数を書くことができます。それでも、それはあなたが何をしようとしているかによって決まります。あなたの投稿はタグ付きのiPhoneですが、あなたはサーバーについて話しています。どのようにそれらを比較していますか? – LandonSchropp

+0

私はNSStringを使ってiphoneでUUIDを生成し、データベースに保存してからサーバーにアップロードしていました。私はそのデータを取得する必要がある場合は、私は関連するUUIDを電話から送信します。私はintを選択したので時間がかかりましたが、まだ私はNSStringと一緒に行くと思います。 – Hadi

0

変換のUUID。

intにキャストします。

int numericFormUUID = (int)UUIDString.hash;


注:衝突はハッシュで、いつものように、可能です。 UUIDは一意に保証されていますが、2人のユーザーが同じ値で終了する可能性があります。

関連する問題