Как предикировать с отношениями в Core Data? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть база данных со следующими таблицами:

Car
Sector

, где в Car у меня есть отношение Один-ко-многим, carHasSectors, а в Sector у меня sectorInCar.

Теперь я хочу написать предикат, который будет искать в таблице Sector, но в таблице Car.Для этого я делаю:

let p3 = NSPredicate(format: "SELF.carHasSectors.sectorName CONTAINS[c] %@ ", searchText)

, где SELF равно Car

, но в результате ничего не может найти.Что я делаю не так?Не могу ли я перейти к Sector с точечной нотацией в Core Data?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Два варианта:

  1. Получить объекты без выборки из отношения (car это текущий Car)

    let result = (car.carHasSectors.allObjects as! [Sector])
                                   .filter{$0.sectorName.range(of: searchText, options: .caseInsensitive) != nil}
    
  2. Выборка Sector с предикатом

    NSPredicate(format: "sectorInCar.name == %@ AND sectorName CONTAINS[c] %@ ", carName, searchText) 
    
0 голосов
/ 24 декабря 2018

Если я правильно понимаю, вы хотите автомобили, которые имеют сектор с определенным названием.Я думаю, что вы должны выполнить свой запрос к таблице Sector с чем-то вроде NSPredicate(format: "sectorName CONTAINS[c] %@ ", searchText) и затем отобразить список секторов, которые вы попадете в список автомобилей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...