У меня есть объект под названием OperationEntity
. У этого есть отношение to-many к OperationInput
.Как хранить данные последовательно в Core Data?
У меня есть контроллер представления таблицы, которая отображает все OperationEntity
, которые будут сохранены. Когда пользователь нажимает на одну из ячеек, выполняется сеанс, идущий на другой контроллер представления таблицы. Этот контроллер табличного представления отображает все связанные OperationInput
из OperationEntity
.
В подклассов NSManagedObject
, которые генерировал для меня Xcode, объявляется тип availableInputs
типа NSSet?
. Я знаю, что наборы не поддерживают порядок своих элементов. Это означает, что я мог бы сохранить входы в таком порядке:
a
b
c
Но когда я забрать его обратно, я мог бы получить его в таком порядке, а не
c
a
b
, но я хочу, входы быть в в том же порядке, в каком они были сохранены!
Как решить эту проблему?
Я подумал о том, чтобы добавить id
к OperationInput
. Каждый раз, когда я сохраняю новый, я увеличиваю id. Когда я его извлекаю, я сортирую массив по id. Но я уверен, что есть лучший способ сделать это, чем это.
Возможно изменение NSSet?
по NSArray?
с грубой силой? Это не может работать, не так ли?
Удивительно, что я не нашел никого, кто задал бы вопрос о переполнении стека!
Это * был * был задан и ответил раньше. Вы найдете больше ответов при поиске '[core-data] save order'. –
@MartinR Но этот вопрос кажется действительно устаревшим. Из ответа Эрика Йоханссона я вижу, что это можно сделать лучше, чем добавление 'id'. – Sweeper
В принятом ответе на упомянутый вопрос упоминаются также упорядоченные отношения: * «Если вы можете настроить iOS 5, то вы можете использовать новую функцию NSOrderedSet для произвольно упорядоченных отношений Core Data» *. Это именно то, что предложил Эрик ниже. - Добавление поля id также является хорошим решением и имеет свои преимущества, поскольку упорядоченные отношения могут быть сложными. –