Подзапрос Core Data с множественными отношениями - PullRequest
0 голосов
/ 16 января 2020

enter image description here Это структура моих основных таблиц БД. Хотелось создать подзапрос в предикате, ниже приведено описание запроса.

Создает все уникальные представления, где SubmisisonField.value совпадает с массивом. Этот запрос на изображение сверху.

Для второго изображения, имеющего запрос таблицы Employee: Создать все ActivityFeedCard, где имя Employee соответствует строке. Теперь поле id в Employee - это то же поле, что и SubmissionField.value, или мы можем сказать SubmissionField.value == Employee.id. Мы должны искать по имени, фамилии и имени EMployee et c, большое спасибо. DB Structure

 let fetchCardsContext = CoreDataManager.shared.getNewBackgroundContext(name: "Fetch Cards for display BG Context")
        var predicate: NSPredicate?
        self.displayedCards.removeAll()
        predicate = NSPredicate(format: "SUBQUERY(submission.submissionTemplate.submissionField.value, $v, $v IN %@).@count > 0", empArray)
        self.displayedCards = ActivityFeedCard.fetchAndSort(in: fetchCardsContext, predicate: predicate, sortOptions: nil) ?? [ActivityFeedCard]()

1 Ответ

1 голос
/ 18 января 2020

Вы хотите «создать все уникальные представления». Таким образом, запрос на выборку должен основываться на сущности Submission. Относительно сущности Submission, submissionTemplate.submissionField.value является коллекцией (потому что отношение submissionField относится ко многим). Вы хотите включить в выборку только те Submission объекты, где коллекция "соответствует массиву". Предполагая, что вы имеете в виду «если у коллекции и массива есть какие-либо общие значения», то предикат, который нужно использовать:

NSPredicate(format:"SUBQUERY(submissionTemplate.submissionField.value, $v, $v IN %@).@count > 0",yourArray)

Или словами: «count of (values, $v») из коллекции submissionTemplate.submissionField.value, которая является IN массивом) больше нуля ".

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