今回は、Realm記事の第2弾を投稿します。
前回の投稿から、かなり日数が経ってしまっていますが…
今回は、実際の使い方。
SQLite同様にDBファイルを作成することから始まります。
DBファイルの作成
1 |
RLMRealm *realm = [RLMRealm defaultRealm]; |
このように記載することで、ドキュメントフォルダにdefault.realmというDBファイルが生成されます。
DBファイル名を指定して生成したい場合は、
1 2 |
[RLMRealm setDefaultRealmPath:@“../Documents/hoge.realm”]; RLMRealm *realm = [RLMRealm defaultRealm]; |
な感じで、デフォルトパスを変更することで、DBファイル名が変更できます。
(この場合は、hoge.realm)
モデルの作成
実際にDBファイルを作成した後は、テーブル(モデル)の作成です。
例えば、「お気に入り」を管理するモデルの場合のモデル例だとこの様な感じになります。
1 2 3 4 5 6 7 8 9 10 |
@interface Favorite : RLMObject @property NSInteger id; @property NSString *name; @end @implementation Favorite + (NSString *)primaryKey { return @"id"; } @end |
データの新規追加
上のモデル「お気に入り」を追加する場合は
1 2 3 4 5 6 7 8 9 |
Favorite *favorite = [[Favorite alloc] init]; favorite.id = 1; favorite.name = @“Best Favorite”; RLMRealm *realm = [RLMRealm defaultRealm]; [realm beginWriteTransaction]; [realm addObject:favorite]; [realm commitWriteTransaction]; |
トランザクション機能を利用することが、約束ごととのことです。
データの検索
検索結果は、RLMResultsという型で取得できます。
1 |
RLMResults *favorites = [Favorite allObjects]; |
でFavoriteモデルの全件取得
検索条件を追加したい場合は
1 2 |
NSPredicate *pre = [NSPredicate predicateWithFormat:@“name = %@”, @“hoge”]; RLMResults *favorite = [Favorite objectsWithPredicate:pre]; |
データの更新
1 2 3 4 5 6 7 |
Favorite *favorite = [[Favorite alloc] init]; favorite.id = 1; favorite.name = @“Better Favorite”; [realm beginWriteTransaction]; [Favorite createOrUpdateInRealm:realm withObject:favorite]; [realm commitWriteTransaction]; |
1 |
+[RLMObject createOrUpdateInRealm:withObject:] |
を利用することによって、主キーと一致するデータが更新されます。
(主キーと一致するデータがない場合は、追加されます。)
データの削除
データの削除も、特に難しくなく
1 2 3 |
[realm beginWriteTransaction]; [Favorite deleteObject:favorite]; [realm commitWriteTransaction]; |
基本的な使い方としては以上です。
データ取得部分で、件数指定でのデータ取得等も実行してみたかったのですが、Realm側にその様なメソッドは準備されていない様子でした。
ロジック側で処理するなり、モデル設計段階で解決する必要がありそうです。