アプリ開発日誌
2016.08.19
【iOS】次世代データベースRealmを使ってみよう!
こんにちは、iOS担当の鶴本です。
今回は次世代データベースRealmについて書いてみようと思います。
Realmとは
「CoreData」や「SQLife」に変わるデータベースと言われています。
Realmは他の主要なデータベース比べ比較的高速です。
またiOSだけでなく、Androidもサポートしており似たようなビジネスロジックを書くだけで利用できるため移植性も高い等といった他のデータベースにはないメリットがあります。
Realmを使用するには
まずはソースをダウンロードしましょう。
https://realm.io/jp/docs/swift/latest/
必要条件、インストール方法等々に関しても上記のURLに詳しく記載されていますので参照してください。
Realmのモデルクラス
まずRealmを使用するにはデータを保存するモデルクラスを定義する必要があります。モデルクラスはSwiftで書きます。
また対応しているデータ型はBool,Int8,Int16,Int32,Int64,Double,Float,String,NSDate,NSDataです。
そしてモデルクラスにはプライマリーキーを定義する必要があります。例として製品を表すモデルクラスを定義してみました。
import Foundation
import RealmSwift
class Product: Object {
// 製品ID
dynamic var strProductID : String = ""
// 名前
dynamic var strName : String = ""
// 価格
dynamic var strPrice : String = ""
// MARK: プライマリーキーを返す
override static func primaryKey() -> String? {
return "strProductID"
}
}
モデルクラスはObjectクラスを継承します。
プライマリーキーを設定するには、primaryKeyメソッドをオーバーライドして、キーにしたいメンバの文字列を返します。
オブジェクトの追加、更新、削除
モデルクラスのオブジェクトのRealmへの追加、更新、削除はトランザクション内部で行う必要があります。以下のように書きます。
トランザクション
let realm = try! Realm()
try! realm.write({
// 追加、更新、削除を行う
})
追加、更新、削除は以下のように書きます。
追加
try! realm.write {
// 新たに製品を追加する
realm.add(productObject)
}
更新
try! realm.write {
// 製品の名前を更新する
productObject.strName = "iPhone"
}
削除
try! realm.write {
// 製品を削除する
realm.delete(productObject)
}
便利ですねーたった これだけでデータの操作が行えます。
終わりに
他にもRealmに対し通知を送信できたり、プライマリーキーによる検索処理も行えるなど機能豊富です。今後も是非使っていきたいですね。
以上です。