で共有レルムに同期されたオブジェクトがどのように、私は最近、(私のアプリのすべてのユーザーにグローバルに利用)共有領域のみRealm.asyncOpen
で照会することができることを学びました。たとえば、すべてのユーザーに読み取り専用アクセス権を持つ/shared
領域があります。通常の方法でクエリを実行しようとしましたが、ゼロオブジェクトが返されました。私はこのようにそれを照会場合しかし、それは動作します:は<a href="https://realm.io/docs/swift/latest/#permission-denied-errors" rel="nofollow noreferrer">the documentation</a>を精練した後スウィフト
Realm.asyncOpen(configuration: sharedConfig) { realm, error in
if let realm = realm {
// Realm successfully opened
self.announcements = realm.objects(Announcement.self)
print(self.announcements)
self.tableView.reloadData()
} else if let error = error {
print(error)
}
}
それは、サーバの代わりに、ローカル、既に同期領域からデータをフェッチしているように見えるため、この方法は、通常のレルムクエリよりも目に見えて遅くなります。
プルダウンされたオブジェクトは、レルムのローカルコピーに格納されることはありませんが、アクセスするたびにROSから照会されることを意味しますか?
つまり、共有領域がプルされ、同期されていませんか? (私のアプリのすべてのユーザーにグローバルに利用)
偉大な答え、ありがとうございます。世界全体を書き込み可能にするだけで、この問題を回避できますか?私のアプリケーションは領域への書き込みの仕組みを提供しないため、セキュリティの意味には関心がありません。 –
はい、レルムがグローバルに書き込み可能な場合はこの問題は発生しませんが、私が概説した解決策はアクセス制御モデルを犠牲にするほど面倒ではないと思っていますが、それはあなたの呼び出しです。 – jpsim
Hmm ...この '/ shared'レルムが' asyncOpen'で初期化された後も、 'NotificationToken'を使って変更をリッスンして、通常のレルムと同様にやり取りすることができますか?私はスキーマの変更を取得するために 'asyncOpen'が必要です。 –