はじめに
約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らしい書き方ができると思いますし、単純に記述量も少なく書けるような気がしています。
今後も多くのアプリで利用されることでしょうし、知っておいて損は絶対になさそうですね。
ということで本日はここまで。
参考: