Realmをインストールする
Realmを使用するために、CocoaPodsを使用してインストールを行います。
PodFileにpod 'RealmSwift'
を追記し、pod install
でインストールします。
pod 'RealmSwift'
Swiftではimport RealmSwift
でインポートします。
import RealmSwift
モデル定義
class モデル名: Object { }
でモデル定義を行います。
@objc dynamic var
で、プロパティ定義を行います。
import UIKit
import RealmSwift
class モデル名: Object {
@objc dynamic var プロパティ名1 : 型名 = 初期値
@objc dynamic var プロパティ名2 : 型名 = 初期値
}
データの追加
realm.add(モデル名(value: 値))
で、データを追加できます。
事前に、プロパティに対する値を入れている必要があります。
let realm = try! Realm()
let object = モデル名()
object.プロパティ名1 = 値1
object.プロパティ名2 = 値2
try! realm.write {
realm.add(モデル名(value: object))
}
データの更新
.filter
等で対象のObjectを取得し、write()
でデータの更新を行います。
let realm = try! Realm()
let results = realm.objects(dayList.self).filter("プロパティ名1 == 値1 AND プロパティ名2 == 値2").first
try! realm.write {
results!.プロパティ名1 = 値3
}
データの削除
.filter
等で対象のObjectを取得し、write()
でデータを削除を行います。
.delete()
で対象のみdeleteAll()
で全て削除します。
let realm = try! Realm()
let results = realm.objects(toDoList.self).filter("name == 'Michael Jeffrey Jordan'")
//
try! realm.write {
realm.delete(results)
}
データが全くない場合初期値を追加する
データがない場合、データを読み込みに失敗します。
そのため、以下のようにして、データがない場合のみ初期値の追加をする必要があります。
let realm = try! Realm()
// データが1つもない場合
if realm.objects(モデル名().self).first == nil {
let object = モデル名()
object.プロパティ名1 = 値1
object.プロパティ名2 = 値2
try! realm.write {
realm.add(モデル名(value: object))
}
}
モデルの変更をした場合
プロパティ名の追加等を行った場合、Realmの呼び出しでエラーになります。
そのため、変更があった場合スキーマの情報を更新させエラーが発生しないようにする必要があります。
// プロパティ名の変更があった場合、schemaVersionの値を変更する
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in})
Realm.Configuration.defaultConfiguration = config
config = Realm.Configuration()
config.deleteRealmIfMigrationNeeded = true