Open2

Realm Swiftについて

kamimikamimi

Realmとは

  • データベース
  • データは端末に保存される

https://www.mongodb.com/docs/realm/sdk/swift/

ユースケース

  • サーバにデータを保存したくない時
    • 開発者からもデータを見えないようにしたい
    • オフライン対応したい(Realmはデータを端末に保存するので通信が発生しない)

できること

  • ファイルの暗号化をすることができる
    • 暗号化のキーはkeychainなどに保存しとくのが良さそう

https://www.mongodb.com/docs/realm/sdk/swift/realm-files/encrypt-a-realm/

データが保存されている場所

  • 端末のDocumentフォルダ
/Users/<user名>/Library/Developer/CoreSimulator/Devices/7B81A125-F768-45BC-B6DC-BF9AB67AAA00/data/Containers/Data/Application/79532977-734A-42F9-BC41-F44D561E707E/Documents/default.realm
kamimikamimi

Tips

  • Realm Studioと言うアプリを使って、データの中身を見ることができる(開発時に役立つ)
    • ファイルの確認の仕方は、以下のコードをlldbやコードに書けば見れる
    • 実機では見ることができないようなので、シミュレータで確認する
// lldb
po Realm.Configuration.defaultConfiguration.fileURL

https://www.mongodb.com/docs/realm-legacy/jp/products/realm-studio/index.html

  • 暗号化されているときは、キーを入力すれば開ける

  • keyの取得方法は以下

https://teratail.com/questions/52401

トラブルシューティング

  • Realm Studioを開いている状態で、データのCRUDはできない(しようとするとクラッシュする)
Realm file is currently open in another process which cannot share access with this process. All processes sharing a single file must be the same architecture. For sharing files between the Realm Browser and an iOS simulator, this means that you must use a 64-bit simulator.

  • データを削除した後に削除したデータにアクセスしようとするとクラッシュする
    • 表示する用のエンティティとRealm用のエンティティで分ける

https://llcc.hatenablog.com/entry/2020/04/26/205254