Я пишу приложение iOS, в котором хранятся записи людей, и ему нужно отображать списки, отсортированные по определенным причинам. Есть переменное количество этих упорядочений, и они генерируются "на лету", но я хотел бы, чтобы они хранились в хранилище данных. Способ SQL для этого состоит в том, чтобы иметь таблицу ListPositions со списком, идентификатором в таблице лиц и ключ сортировки. Затем, чтобы отобразить конкретный список, я могу выбрать весь список ListPositions с заданным именем, потянуть ссылочных лиц и отсортировать по клавише сортировки. Попытка сделать это в CoreDatat, однако я столкнулся с проблемами. Я пытаюсь сделать это, используя следующую схему:
Person:
Name
DOB
etc...
positions -->> ListPosition
ListPosition:
listName
sortKey
person --> Person
Затем я могу получить все Лица в данном списке с помощью NSPredicate
[NSPredicate predicateWithFormat:@"ANY positions.listName like %@", someList];
Это позволяет мне динамически добавлять списки против большого набора людей. Проблема в том, что я не могу использовать поле sortKey в ListPosition для сортировки Лица. Что NSSortDescriptor сделает это? И если невозможно отсортировать выборку по свойству одного элемента отношения to-many, что еще один способ получить несколько динамических порядков в coredata? Я показываю списки с NSFetchedResultsController, поэтому я не могу собрать списки в памяти. Мне нужно сделать это с помощью одного NSFetchRequest.