【Swift】UUIDで重複しない固有IDを作る
どうも、ねこきち(@nekokichi1_yos2)です。
データベースにデータを保存する場合、
「どうやってユーザーとデータを紐付けるか」
の問題が発生します。
当然、ユーザー別に固有のID(データの羅列)が必要ですので、
- 乱数
が思いつきます。
しかし、乱数は生成する度に別の文字列を生成するので、デバイス側で生成した乱数を保持しなくてはなりません。
もしデータ照合用に乱数をUserDefaultに保存しても、アプリを削除すれば、UserDefaultも削除されてしまいます。
そこで、UUID - ユニークID、の登場です。
UUIDとは?
一言で言うと、重複しない固有のID、です。
参考:https://wa3.i-3-i.info/word13163.html
例えば、IDやパスワードを設定する時、
- 名前
- 誕生日
- キーワード
などの自分だけが知る要素を組み合わせます。
なぜなら、”自分だけ”の要素なので、他ユーザーと差別化でき、重複しづらくなるからです。
かといって、乱数ならまだしも、無限に近いパターンを生み出す法則や算出方法がない限り、99%重複しないIDを作るのは困難です。
しかし、UUIDは予め重複しないIDを生成されるよう設計されてるので、手軽に固有のIDを作れちゃいます。
(確率的にUUIDが重複する確率はほぼ0なので、心配する必要なし。)
参考:
また、UUIDを利用することで
- デバイス別にUUIDが決まっている
- UUIDの生成コードで呼び出すだけ
- 変数などで保持しなくても良い
の利点を活かせます。
なので、
- どうやってIDを生成するか
- どこにIDを保持しておくか
を考える必要がなくなり、データ紐付けの実装が楽になります。
UUIDの生成方法
let uuid = UIDevice.current.identifierForVendor!.uuidString print(uuid)
回数やアプリの初起動に関わらず、常にUUIDは同じです。
シミュレータでもUUIDが生成されます。
↓
iPhone 8 Plus
iPhone 11