スクリーンショット 2016-01-07 0.51.21

【Swift】Realmを使ってみよう

LINEで送る
Pocket

今回は、Realmの導入から使い方について書きたいと思います。

Realmとは?


Realm


Realmはクロスプラットフォームに対応した次世代版mobileデータベースです。
Objetctive-c, Swift, Javaに対応しており、ORMではなく独自のエンジンを採用しています。
また、その性能の速さ、実装コストの低さも売りの様です。
SQLiteやCore Dataで疲弊していた人にとっては朗報ですね!
これだけ整っていて料金は無料。

とりあえず、使ってみる価値はあるのではないでしょうか。

インストール方法


今回はCarthageを使って導入したいと思います。

Carthageについてや使い方についてはこちらをご覧ください。

【Swift】CarthageでAlamofireを入れてみる

当記事執筆時期のRealmの最新バージョンはv.0.97.0となっております。

Carthageについては多く触れず、Realm独自の部分のみに絞って軽く説明したいと思います。

はじめにもご覧ください。

Cartfileの編集


Cartfileに以下を追加します。


.frameworkの追加


carthage updateをすると

Realm.framework
RealmSwift.framework

の二つがCartage/Build/iOS内に出来ると思います。

Objective-cで書いている方はealm.frameworkのみ、
Swiftで書いている方は両方追加してください。

当然、Run Scriptのパスも追加した.framework分追加します。

Realmを使ってみる


さて、早速Realmを使ってみたいと思います。

※コード例はSwiftで記述しています。

1. Objectのサブクラスの用意
2. Realmへの書き込み(追加/更新/削除)
3. Realmからの読み込み

1. Objectのサブクラスの用意


Objectは従来のRDBでいうテーブルのような存在です。

Objectクラスを継承したクラスのみRealmに保存する事が出来ます。
また、保存出来る型には制約があり、

Bool, Int8, Int16, Int32, Int64, Double, Float, String, NSDate(ミリ秒以下切り捨て), NSData

のみとなります。

実際のコードはこんな形になります。


2. Realmへの書き込み(追加/更新/削除)


さて、オブジェクトが用意出来たので実際にそれをRealmで管理してみましょう。

Realmへのオブジェクトの追加、変更、削除は、トランザクションの内部で行う必要があります。
ですが、すごく簡単ですのでご心配なく。

Realmへの追加


これだけです。めちゃくちゃ簡単ですね。
Personインスタンスの用意の方がDBへの追加より行数食ってる。

Realmへの更新


トランザクション内でプロパティを変更するのみ!

Realmへの削除


全件削除は


簡単すぎぃ!

Objectインスタンスはデータのコピーではなく実体であること


今回の例で言えばPersonインスタンスはデータの実体になります。コピーではありません。
なので、トランザクション内でプロパティを変更することは、
updateクエリの様な意味合いを持ちますし、
インスタンスのdeleteはdeleteクエリの様な意味合いを持つことになるのです。

3. Realmからの読み込み


さて、最後に読み込みを行いたいと思います。

オブジェクト全件取得


※ResultsはObjectのサブクラスのみ格納出来るArrayと言う認識で大丈夫かと思います。

条件指定取得


filterでwhere句の様な形で対象の絞り込みを行います。


これで、Realmの基本的な使い方の説明を終わります。
また気が向いたらもう少し込み入った使い方のブログを書こうと思います。

誰かのお役に立てば。

このブログのswift記事一覧

LINEで送る
Pocket

Dalt

translimit, Inc. Application Engineer. Twitter: @daiki1003 Facebok: Daiki Asahi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です