2016-12-04 5 views
2

Итак, в последнее время я изучаю 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 записей, как отображение в один-к-одному.

Я не уверен, что такой предикат выполним. Если есть другие способы достичь того, что я хотел бы сделать здесь, я больше не хочу учиться.

ответ

1

Чтобы запросить все (на самом деле должен быть в состоянии один объект из первичного ключа) объектов B где objectB.propertyA == objectA.propertyA использование:

let resultObjectsB = realm.objects(B).filter('propertyA = %@', objectA.propertyA) 

Другой вариант заключается в использовании один к одному отношения между A и B, узнать больше на https://realm.io/docs/swift/latest/#to-one-relationships

Смежные вопросы