【Swift】RealmでObjectIdクラスの使い方!一意のID生成とString型変換

この記事からわかること
- Realm Swiftで一意のIDを生成する方法
- ObjectIdクラスの使い方
- String型と相互に型変換(キャスト)するには?
\ アプリをリリースしました /
参考文献: ObjectId Class Reference
モバイル向けのデータベースを提供しているRealm Swiftの中でObjectIdクラスの使い方をまとめていきます。
ObjectIdクラスとは
ObjectId
クラスは12バイトの一意の英数字の羅列を自動で生成するクラスです。完全にランダムなわけではなく、生成された識別子にソートをかけると生成された順番に整列されるように割り振られます。
Foundation
フレームワークに定義済みのUUID
構造体と基本的な役割は同じです。
おすすめ記事:UUIDとは?
一意のidを生成する方法
ObjectId
クラスを使用して一意のIDを生成するにはテーブルクラスの定義の際に、ObjectId
にします。初期期を格納しなくてもインスタンス生成時に自動で生成してくれるので気にする必要はありません。
インスタンスを普通に作成する
クラスのプロパティとしてではなく、普通にインスタンス化した際に一意のIDを生成するにはgenerate
メソッドもしくはinit(timestamp:machineId:processId:)
を使用します。
timestamp
には適当なData型をmachineId
とprocessId
にはInt型で数値を渡すことで生成されるIDが変化します。
シンプルなイニシャライザ(init())を使用してインスタンス化しても一意のIDは生成されないので注意してください。
String(文字列)型を取得する
ObjectId
型ではなく、String(文字列)型として取得したい場合はstringValue
プロパティを使用します。
String(文字列)型をObjectId型にキャストする
String
(文字列)型からObjectId
型にキャストしたい場合はObjectId(string:)
形式のイニシャライザを使用します。throws
がついているのでtry
を使用します。
失敗する場合は文字列が24文字でない場合または「0-9a-fA-F」以外の文字が含まれている場合です。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。