Все решения, которые я нашел в Интернете, предназначены для локальных Realms, а не для синхронизированных Realms (я использую синхронизацию на основе запросов c). Как это сделать правильно для синхронизированного Realm?
У меня есть объект Shop
и объект Item
. Shop
имеет много предметов. Пользователь может просматривать товары и должен видеть, к какому магазину принадлежит этот товар. Довольно простой и понятный сценарий.
В классе Shop
у меня есть:
let items = List<Item>()
, а в классе Item
-
let shops = LinkingObjects(fromType: Shop.self, property: "items")
var shop: Shop? { return shops.first }
Запрос области выглядит следующим образом:
private var realm : Realm!
private var subscriptionToken : NotificationToken?
private var syncSubscription : SyncSubscription!
...
...
...
let items = realm.objects(Item.self)
syncSubscriptionItem = items.subscribe()
subscriptionTokenItem = syncSubscriptionItem.observe(\.state, options: .initial) { state in
if state == .complete {
let shopName = items[0].shop?.name // Shop is always nil
}
}
Я могу видеть магазин, только если владелец магазина вошел в приложение, что означает, что Realm синхронизировала информацию о магазине с локальным Realm. Но для пользователей других устройств магазины никогда не синхронизируются. Но как синхронизировать c магазины для всех других пользователей с помощью этого типа обратной ссылки?
Скриншот прилагается, чтобы прояснить, что я имею в виду: