Realmに値の登録処理を実装しようとした際、下記エラーメッセージに遭遇することがあります。
Attempting to create an object of type '○○Model' with an existing primary key value '000000000000000000000000'
上記エラーを翻訳すると下記になります。
既存の主キー値「000000000000000000000000」を持つタイプ「○○モデル」のオブジェクトを作成しようとしています
つまり、プライマリーの重複エラーとなります.
なぜ、重複エラーが発生しているのか分からないの対処法
オブジェクトIDの生成ミス
下記のように、イニシャライザを使用して生成した場合、結果は000000000000000000000000が生成されます。つまり、下記方法では一意にオブジェクトIDを生成することは出来ません。
let objectId = ObjectId()
オブジェクトIDの生成方法
下記方法では、一意のオブジェクトIDを生成することが可能です。
ObjectId型となります。
let objectId = ObjectId.generate()
String(文字列)型で受け取る方法
stringValueを使うことで文字列で受け取ることが可能です。
let objectId = ObjectId.generate()
let objectIdString = objectId.stringValue // 文字列型に変換
コメント