文系コボラーが初めてiOSアプリ開発に挑戦し、Web系エンジニアになった日記

文系コボラーがほぼ独学でiOSアプリを作ってみました。 -> iOS/Androidエンジニア -> Web系エンジニアになるまでの日記。

Realmのインストールでハマった話

さて、今回はRealmのインストールでハマった話です。

Realmとは

Realmとは、今話題となっているローカルデータストレージらしいです。
なんでも、CoreDataやSQLiteとかに変わってこれからのスタンダードになって行く可能性があるとかないとか。
Androidでも使えるらしいので、今後Android展開することがあった時には楽かもしれないです。

インストール

インストールはSwift Docs - Realm is a mobile database: a replacement for SQLite & Core Dataを見ながら、CocoaPodsを使って行いました。
ものの数分でインストールは完了。

コーディング

早速、上記の公式サイトを見ながら実装。
今回は記録開始ボタンをタップしてから、再度ボタンをタップして記録終了するまでの距離と、
平均速度、その時の移動ルート(GMSPolylineを使用)を保存するためのクラスを別のswiftファイルを作って以下のプロパティを持たせる。
  • 移動距離:Double
  • 平均速度:Double
  • 移動ルート:GMSPolyline
  • 作成日時:NSDate

あとはボタンがタップされた時のActionに、保存するデータのオブジェクトを作成し、
それぞれの値を格納してからRealmオブジェクトを作成してwrite,addすれば完了…のはずでした。

うまく動かない

ここまで実装して、いざ動かしてみました。
…動かない。
前回も弄ばれたアイツです。
SIGABRT

さて困った。

落ちてるところはRealmオブジェクトを作成するとこだったので、
きっとインストールが失敗してるんだろうと思い、何度もpod installを繰り返したけど変わらず。
何が悪いのか分からなかったので、とりあえずプロジェクトを新たに作り直して、
全部のソースをaddしてCocoaPodsをインストールしてpod install し直してみた。
Realm()通った!
けど、結局何が悪かったのか分からず、BuildSettings周りを比較してみたら、Other Linker FlagsにRealmSwiftが入ってない。
原因はこれっぽい。

Other Linker FlagsってCocoaPods が自動で追加してくれると思ってたけど、ダメなパターンがあるのかな。
前回の"-ObjC"も、もしかして本来は手動で追加する必要なかった?


とりあえずは動いたので、これからエラーになったらOther Linker Flagsも疑ってみるようにしよう。


ちなみにRealmに格納できるデータ型は決まってるらしく、結局GMSPolylineを格納しようとしてコケたので、
そこはどうにかして別のデータ型で格納しなきゃ。
LongitudeとLatitudeを格納できるRealmのクラスを作って、それをメインのクラスにListで格納すればいけるかも。


次は保存したRealmデータを表示して、履歴を出せるようにしたいなぁ。