はじめに
約2年前に画期的なモバイルデータベースとしてRealmについて紹介させて頂きました。
当時はSwift専用のものがなかったため、Objective-C用のものをブリッジヘッダーファイルを作成することで利用していました。
現在はかなり多くのアプリでも利用され、広く浸透していると共に、SwiftRealm
が作られ、Swift専用化しています。
今回は、以前、筆者が書いたSwiftでRealmを使ってみよう!をSwiftRealm
で書き直す形でSwift3でのRealm
の使い方を見ていきたいと思います。
RealmSwiftの導入方法
CocoaPods
を利用して導入してみます。
(Carthage
での利用方法も公式サイトにて紹介されています。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
因みに、abstract_target
は複数targetにまたがって利用したいライブラリがある場合に利用します。
(上記の例はテストでのみ利用するライブラリがある場合に利用する書式です。)
また、post_install do |installer|
〜end
までの書式はSwiftのバージョンを指定するために追加します。
Podfile
ができたらpod install
を実行してxcworkspace
ファイルを開きましょう。
保存オブジェクトの生成
Objective-C用のときはRLMObject
型のクラスを作成していましたが、RealmSwift
では単にObject
型のクラスを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
Objective-C用のRealm
ではRLMArray
型としてskills
を作成していましたが、RealmSwift
ではList<Skill>
型として作成できます。
こちらの方が直感的でわかりやすいですね。
因みに、dynamic var skills = List<Skill>()
と書くとエラーが発生するのでList
を利用する場合はlet
にしましょう。
オブジェクトのインサート/アップデート
先程作成したオブジェクトを保存する方法について紹介しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
Objective-Cの際はrealm.beginWriteTransaction()
やrealm.commitWriteTransaction()
などわざわざ書いていたものの、RealmSwift
では非常にコンパクトに書けますね。
因みに、アップデートであれば、
1 2 3 |
|
のようにすれば良さそうです。
データの確認
今は、Mac App StoreからRealm Browser
アプリをインストールすることで簡単にデータ確認が可能になっています。
手順は以下の通りです。
1.Realm Browser
を起動する
2.Realm
ファイルを選択して開く
そうすることで、下記のようにデータを確認することができます。
注意すべきこととしては、シミュレータだとrealm
ファイルを探すのに骨が折れるかもくらいでしょうか…
/Users/<username>/Library/Developer/CoreSimulator/Devices/<simulator-uuid>/data/Containers/Data/Application/<application-uuid>/Documents/default.realm
にありますので該当するファイルを検索するなどして探しましょう。
まとめ
さて、如何でしたでしょうか。
筆者は久しぶりにRealm
を触ったため、以前利用していたときよりも『だいぶ変わったな』と正直思いました。
ですが、RealmSwift
になったことで、よりSwift
らしい書き方ができると思いますし、単純に記述量も少なく書けるような気がしています。
今後も多くのアプリで利用されることでしょうし、知っておいて損は絶対になさそうですね。
ということで本日はここまで。
参考: