RealmをCRUD処理のうち、今回はデータの更新(Update)と削除(Delete)処理のやり方について紹介します。
先にモデルを用意しておく必要があるので、まだの場合はこちらの記事を参考に作成しておいてください。
データを更新・削除する方法
Realmにデータを更新・削除するには次のような流れでコードを記述していきます。
- realmインスタンスを生成する
- 更新 or 削除したいデータを検索する
- 検索したデータを更新 or 削除する
例えば次のような社員モデルがあったとします。
import Foundation
import RealmSwift
// 社員モデル
class Employee: Object {
@objc dynamic var id: Int= 0 // 社員ID
@objc dynamic var name: String = "" // 社員名
@objc dynamic var department: String = "" // 部署
}
ここに、次のようなデータがあったとして、このデータを更新・削除する例を紹介します。
カラム名 | 値 |
社員ID | 123 |
社員名 | 田中 花子 |
部署 | 経理部 |
データ更新の例
例えば、部署を異動した時や結婚などにより苗字が変わった場合、データベースの更新が必要ですね。
今回は「田中花子」さんが経理部から総務部へ移動したと想定してデータを更新します。
// ① realmインスタンスの生成
let realm = try! Realm()
// ② 更新したいデータを検索する
let targetEmployee = realm.objects(Employee.self).filter("id == 123")
// ③ 部署を更新する
do{
try realm.write{
targentEmployee.department = "総務部"
}
}catch {
print("Error \(error)")
}
上記では、まず社員IDを使って「田中花子」さんのデータを抽出し、realm.write{}の中で、departmentプロパティに新しい値(総務部)を代入しています。
これで、田中花子さんの部署名は「経理部」から「総務部」へ更新されます。
もし、データの抽出(検索)方法がわからないという方は、こちらの記事で解説しているので参考にしてください。
データ削除の例
例えば、会社を辞めた場合はデータを削除する必要がありますね。
今回は先ほどの「田中花子」さんが退職したと想定して、データを削除します。
流れは先ほどの更新とだいたい同じです。
// ① realmインスタンスの生成
let realm = try! Realm()
// ② 削除したいデータを検索する
let targetEmployee = realm.objects(Employee.self).filter("id == 123")
// ③ 部署を更新する
do{
try realm.write{
realm.delete(targetEmployee)
}
}catch {
print("Error \(error)")
}
データを削除したい場合はdelete()メソッドを使います。
削除したいデータを検索して、それをdelete()メソッドの引数に渡してあげるだけで完了です。
削除時の注意点(リレーションがある場合)
リレーションがある場合、リレーション先のデータも別途削除しなければゴミデータが残るので注意してください。
例えば、次のように社員1人1人に対して、使用するコンピューターを管理するコンピューターモデルがあったとします。
simport Foundation
import RealmSwift
// 社員モデル
class Employee: Object {
@objc dynamic var id: Int= 0 // 社員ID
@objc dynamic var name: String = "" // 社員名
@objc dynamic var department: String = "" // 部署
@objc dynamic var computer: Computer? // Computerモデルと1対1の関係
}
// コンピュータモデル
class Computer: Object {
@objc dynamic var name: String = "" // コンピューター名前
@objc dynamic var brand: String = "" // メーカー
}
「田中花子」さんの退職に伴い、先ほどrealm.delete()で削除しましたが、これだけですとコンピューターモデルには田中花子さんが使っていたコンピューターの情報が残ってしまいます。
そのため、不要であれば、こちらのデータも削除しておく必要があります。
(2024/11/21 22:37:26時点 Amazon調べ-詳細)