RealmSwift試した感想とメモ書きです。
CRUDくらいしかやってないのですが使うのがすごい簡単すぎて感動したのでその辺り書いて行こうと思います。
利用したRealmのバージョンは0.93.1になります。
Realmとは
SQLiteの代替になると言われているデータベースです。
海外ではZynga、国内ではChatwork等で利用されているようです。
構文の短さやテーブルの定義の簡単さが魅力です。
RealmSwiftとは
RealmSwiftとはSwiftで書かれたRealmを使うためのライブラリです。
2015年5月にリリースされました。
RealmSwiftのインストール
Podfileに下記を記載してpod install
をするだけです。
CocoaPodsの0.37.1以上が必要なので、古いCocoaPodsを使っている場合は更新する必要があります。
pod 'RealmSwift' use_frameworks!
RealmSwiftでのスキーマ定義
以下のようにクラスを作成すれば完了です。
スキーマ定義用のファイルが不要なので非常に簡単です。
import RealmSwift class User: Object { dynamic var id = 0 dynamic var name = "" override static func primaryKey() -> String? { return "id" } }
RealmSwiftでのデータ作成
データの作成は下のように行います。
Realmのインスタンスを作り、それに対してModelをaddすればデータが保存されます。
import RealmSwift let realm = try! Realm() let user = User() user.id = 0 user.name = "Name1" try! realm.write { realm.add(user) }
RealmSwiftでのデータ取得
データの取得は下のように行います。
import RealmSwift let realm = try! Realm() let user = realm.objects(User)[0]
検索は下のように行います。
import RealmSwift let realm = Realm() let users = realm.objects(User).filter("id = 0")
メソッドチェーンも使う事ができます。
import RealmSwift let realm = Realm() let users = realm.objects(User).filter("id = 0").filter(NSPredicate(format: "id = 0"))
ソートは下のように書けます。
import RealmSwift let realm = Realm() let users = realm.objects(User).filter("id = 0").sorted("id")
RealmSwiftでのデータ更新
データの更新は下のようにします。
import RealmSwift let realm = Realm() let user = realm.objects(User).last! try! realm.write { user.name = "Name2" }
RealmSwiftでのデータ削除
データの削除は下記の通りです。
import RealmSwift let realm = try! Realm() let user = realm.objects(User).last! _ = try? realm.write { realm.delete(user) }
まとめ
簡単でしたがRealmSwiftでの使い方を書いてみました。
Coredataと比べると、設定が不要で構文も非常にシンプルで書きやすいですね。
今後はRealmを積極的に利用していこうと思います。
追記
マイグレーション周りも調べてみました。