SwiftでRealm Databaseを使う

yukimonkey
10 min readApr 29, 2020

--

こんにちは、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 DatabaseRealm 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からメッセージください。

わかる範囲でお答えいたします!

お疲れ様でした!

--

--

yukimonkey
yukimonkey

Written by yukimonkey

アプリ作ったことないのに社長の思いつきで開発することになったエンジニア

No responses yet