質問: 0 { realm.add(newDog) } ``` 初歩的な質問ですがよろしくお願いいたします。
回答: 考え方はそれで合っています。Realmには同じプライマリキーを持つオブジェクトがある場合は新しいデータで「更新」するというAPIは用意されています(`add(_, update:)`)が、古いデータの方を残すというAPIはありません。 (もし目的がそっちなら ``` realm.add(newDog, update: true) ``` と書くと古いオブジェクトを自動的に更新してくれます。) なので、すでにオブジェクトが存在するかどうかをチェックして、存在する場合は何もしない、という処理を書きます。 ただし、プライマリキーを設定しているのに`filter()`で検索する必要はありません。 プライマリキーがあるオブジェクトでキーが分かっているなら、`object(ofType:forPrimaryKey:)`でプライマリキーを使ってオブジェクトを取得できます。 ``` if realm.object(ofType: Dog.self, forPrimaryKey: 5) == nil { realm.add(newDog) } ```