Swift CoreData с использованием предикатов с массивом - PullRequest
0 голосов
/ 06 октября 2018

Мне нужно сохранить массив строк в CoreData, а затем использовать предикаты для фильтрации данных для этого массива.

В соответствии с этим типом поля сообщения Transformable (с пользовательским классом [String]) уловка, и я могу правильно сохранить массив строк: Как сохранить массив в CoreData?

Однако я не могу использовать предикаты для этих полей.В частности, моя цель - найти все элементы, где хотя бы один элемент в сохраненном массиве соответствует шаблону.

Итак, вернемся к вопросу: есть ли хороший способ хранения массива в CoreData, чтобы позже я мог применить к нему предикаты?

1 Ответ

0 голосов
/ 06 октября 2018

Нашел подходящее решение для CoreData

Не помещать массив как поле Transformable в Entity

  1. Создать отдельное Entity с одним полем,используйте эти объекты вместо array.
  2. Создайте связь между основной Entity и заменой массива Entity.
  3. Во время выполнения: найдите CoreObject массива Entity, используя предикат:

NSPredicate (формат: "% K =% @", #keyPath (YourArrayEntity.onlyField), matchString)

Используйте предикаты для поиска ваших основных сущностей

NSPredicate (формат: "ANY% K ==% @", #keyPath (YourMainEntity.relationToArrayEntity), arrayEntityFoundInPreviousStep)

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