Итак, в последнее время я изучаю Realm в Swift, и я сталкиваюсь с проблемой дизайна, связанной с потенциальным уведомлением между моделями данных. Было бы очень признательно, если кто-то захочет пролить некоторое понимание.Предикат перекрестных ссылок для запросов в реальном времени в Swift
// Class A is what users mainly interact with
Class A: Object {
dynamic var propertyA = ""
dynamic var propertyB = ""
dynamic var propertyC = ""
override static func primaryKey() -> String? {
return "propertyA"
}
}
// Class B is what the server interacts with, like data feeding
Class B: Object {
dynamic var propertyA = ""
dynamic var propertyX = ""
dynamic var propertyY = ""
dynamic var propertyZ = ""
override static func primaryKey() -> String? {
return "propertyA"
}
}
Я поставил блок уведомления для Object A
внутри контроллера. Поэтому всякий раз, когда изменения происходят в resultObjectsA
, блок уведомлений запускается.
let resultObjectsA = realm.objects(A).filter('predicate1')
let notificationTokenA = resultObjectsA.addNotificationBlock {
...
}
В приложении, которое я в здании, пользователь может выбрать набор Object A
, и приложение будет запрашивать статус выбранного набора с сервера. Результаты возврата будут сохранены/представлены в Object B
. Теперь, мне нужно написать запрос/предиката Object B
:
let resultObjectsB = realm.objects(B).filter('predicate2')
таким образом, что propertyA
в resultObjectB
записи могут быть найдены в propertyA
в resultObjectsA
записей, как отображение в один-к-одному.
Я не уверен, что такой предикат выполним. Если есть другие способы достичь того, что я хотел бы сделать здесь, я больше не хочу учиться.