SwiftでRealm Databaseを使う
こんにちは、Yukiです。
アプリ開発未経験者がiOSアプリを作成するシリーズのDatabase 編です。
なぜiOSアプリを開発することになったかは最初の記事で↓
今回はSwiftでRealm Databaseを使ってみたのでその時のことを書きます。
目次です。
- cocoaPodsのインストールとセットアップ
- RealmSwiftのダウンロード
- Realm Studioのインストールと参照方法
- Realm Databaseにデータを追加
- Realm Databaseのデータを参照
CocoaPodsのインストールとセットアップ
……………………………………
CocoaPodsはXcodeのプロジェクトで3rdパーティーのライブラリーを使用したり管理したりするもの
今回はReactSwiftをインストールするためにCocoaPodsを使います。
CocoaPodsのインストール
$ sudo gem install cocoapods
CocoaPodsのセットアップ
$ pod setup
簡単ですがCocoaPodsの設定は以上です。
RealmSwiftのダウンロード
……………………………………
Xcodeのプロジェクトを作成
まずはXcodeで新しいプロジェクト作成します。
今回使うプロジェクト名はrealmtestとしておきます。
Podfileの作成と設定
CocoaPodsでインストールするパッケージを設定するPodfileを作ります。
まずターミナルを開いて作成したプロジェクトのディレクトリーにいく
$ cd ~/Desktop/realmtest
以下のコマンドを入力すると自動でPodfile
が作成されます。
$ pod init
※Podfileが作成されたか確認したい時はls コマンド
(ファイル一覧表示)で参照できます。
$ ls
Podfile realmtest realmtest.xcodeproj
Podfileの初期の状態はこんな感じ。
初期状態のファイルの6行目、# Pods for realmtestの下に以下のコードを追加。
pod 'RealmSwift'
変更したらターミナルに戻って、ライブラリーをインストールします。
$ pod install
プロジェクト内にworkplaceファイルが追加されていることが確認できます。データベースとのやりとりはこのworkplaceファイルで行います。
$ ls
Podfile Podfile.lock Pods realmtest realmtest.xcodeproj realmtest.xcworkspace
Realm stadio のインストールと参照方法
……………………………………
Realm stadioとはRealm Database
とRealm Platform
をGUI上で簡単に操作できるツールです。
Realm stadioから自分のOS環境のものをインストール
※Macの場合はRealm Studio-3.10.0.dmgがダウンロードされるのでクリックで開く
Realm StadioをドラッグしてApplicationsフォルダにいれる
ApplicationsからRealm Studioを開くと以下のような画面が表示されます。
ここで少し厄介なのが、Realm StudioでRealmファイル(データベース)を見るにはRealmファイルまでのパスが必要になるということです。
Realmファイルのパスの参照と参照方法
一旦ファイルが色々増えたので、プロジェクト内のディレクトリを確認しておきます。↓
realmtest
├── Podfile
├── Podfile.lock
├── Pods
├── realmtest
├── realmtest.xcworkspace
└── realmtest.ccodeproj
Xcodeプロジェクトのワークスペース(realmtest.xcworkspace)にいき、viewController.swiftを開く。
RealmSwiftをインポートしてViewControllerの中にRealmのファイルパスを表示するコードを書いてビルド(左上の▶︎ボタン)する。
import RealmSwiftprint(Realm.Configuration.defaultConfiguration.fileURL)
ビルドが成功すると、コンソールにrealmのファイルパスがプリントされるのでfile:移行をコピーする。
ターミナルからrealmファイルをopenコマンドで開く
$ open ///Users/***/Library/Developer/CoreSimulator/Devices/23AAA288-FEA7-4B68-BBA6-57EFFE96EF65/data/Containers/Data/Application/000A644D-1ACE-4A40-9230-EAFAEBD2B1B2/Documents/default.realm
キャプチャのような画面がRealmのデータベースが表示される。
※ClassesにResidentとありますが、今は何も追加していないので何もなくて大丈夫です。
ここまでがRealm Stadioのインストールと参照方法でした。
では実際にXcodeからデータを操作してみます。
Realm Databaseにデータを追加
……………………………………
Xcodeのワークスペースから、データベース用のswiftファイルをViewController.swiftと同じ階層に作成します。
新しいファイルはcmd+Nで作成できます。
今回はファイル名をResident.swiftにしてゲームの住民のクラス(Resident)を作成したいと思います。
Resident.swiftに住民の設計図(クラス)を作成します。
import RealmSwiftclass Resident: Object {@objc dynamic var name: String?
@objc dynamic var type: String?
@objc dynamic var gender: String?
@objc dynamic var habit: String?}
viewController.swiftを開いてResidentクラスのインスタントを作成し、住民の情報を設定。
※パスを参照したときに書いたimport RealmSwift
とパスの表示コードはそのまま残しておいてください。
let resident = Resident()resident.name = "ジュン"
resident.type = "リス"
resident.gender = "男"
resident.habit = "あながち"
最後にRealmにデータを追加します。
let realm = try! Realm()try! realm.write { realm.add(resident)}
後はビルドして、先ほどと同様に表示されたファイルパスをopenコマンドで開くと、以下のようにインスタンス で作成した住民がデータベースに追加されているのが確認できます。
Xcodeのワークスペースに戻り、インスタンス で新しい住民データを設定してビルドすると
新しく住民が登録されます。
Realm Databaseからデータを参照
……………………………………
では作成したデータベースからデータを参照してみます。
viewController.swiftを開いて、ViewControllerクラスの中に書いたコードをlet realm = try! Realm()
を残して削除。
Residentのデーターベースから最初の住民の名前を取得するために以下のコードを追記してビルド。
let results = realm.objects(Resident.self)print(results[0].name)
コンソール上にOptional("ジュン")
が表示されていれば成功です。
参照データのフィルター
取得するデータをフィルターすることも可能です。
例として住民の名前がジュンのデータを取得してみます。
let resultsの最後に.filterを追加して以下のように指定してビルド。
let results = realm.objects(Resident.self).filter("name = 'ジュン'")
コンソール状にジュンの住民情報が表示されたら成功です。
フィルター以外にも色々なフィルターがあるので、Realmの公式ページで確認してみてください。
以上がSwiftでRealm Databaseを使う基本的な方法になります。
私はここまでたどり着くのに結構エラーが出て大変でした笑
もしつまづいたらTwitterのDMからメッセージください。
わかる範囲でお答えいたします!
お疲れ様でした!