RealmSwift(レルム)で実装編

前回、プロジェクトのセットアップが終わったので、中身を実装します。

「Realm Browser」のインストール

とその前に、便利なツールをインストールしておきましょう。
Realm公式のツールです。データベースの中身を確認できます。
https://itunes.apple.com/jp/app/realm-browser/id1007457278?mt=12

データを挿入するプログラムの実装

まずは、テーブルレイアウトの元になるクラスを作成します。

次に「ViewController」

コンパイルが通ったら、シミュレータで起動してみます。
一通り流れたら、realmのデータベースファイル「default.realm」が作成されているはずですので、ターミナルで探してみます。

ターミナルで以下のコマンドを打ちます。

※「Permission denied」のところはアクセス権限がないだけなので無視します。

/Users//hoge/Library/Developer/CoreSimulator/Devices/8D7F0311-0F41-4552-B185-E8CEE6C28758/data/Containers/Data/Application/EAC6EBC8-94BC-4E01-9E0F-77CF3C37C711/Documents/default.realm

にファイルができていることがわかったので、チェンジディレクトリしておきます。

そしてさらにターミナルで

と打ちます。

すると、「Realm Browser」をインストール済みであれば、以下の画面が立ち上がります。ファイルが色々グレーアウトされてますが、迷わず右下の「Allow」ボタンをクリックします。

するとどうでしょう。先程動かしたプログラムでデータが挿入されています。

実行エラーになるときは

クラスの構造を変えるとデータベースの構造も変わってしまうので、エラーになってしまいます。今回の場合ですと、「Persion.swift」クラスにプロパティを追加すると発生します。

シミュレータで「EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)」というエラーが出力される場合、コンソールを確認します。

この部分にmigrate(マイグレート)の文字を見つけたら、データベースの構造を変更したためにエラーが発生しています。

私の場合、Personクラスに「birthday」と「genre」プロパティを追加したのでマイグレートしてね。と言われています。

本来はこちらのサイト「http://llcc.hatenablog.com/entry/2015/08/22/183019
でご紹介頂いているような方法が良いと思いますが、すこし面倒なので、データベースファイルを削除して対応します。

※登録してるデータは消えますのでご注意を。また、ファイルを使用してロックしている可能性もあるので、データファイルを削除する場合は、Realm Browserや、シミュレータが起動している場合を、終了させてからのほうが安全かと思います。

ターミナルから、以下のように「rm -i」で対象のファイルを削除していきます。「dafault.realm.management」はディレクトリなので、「cd」コマンドで移動して配下のファイルも削除しておきます。

 

このあと、再度Xcodeからシミュレータを実行すれば動くようになるはずです。(私はこれで新しいテーブル構造で動作することを確認できました。)

ではでは。

“RealmSwift(レルム)で実装編” への3件の返信

  1. ピンバック: RealmSwift(レルム)が使えるようになるまで | よろずやSEさん

  2. ピンバック: 【swift】グラフが描ける外部ライブラリ「Chart」を試してみる | よろずやSEさん

  3. ピンバック: 【swift】グラフが描ける外部ライブラリ「iOS-Charts」を試してみる | よろずやSEさん

コメントを残す

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