2016-05-20 4 views
1

У меня есть объект под названием OperationEntity. У этого есть отношение to-many к OperationInput.Как хранить данные последовательно в Core Data?

enter image description here

У меня есть контроллер представления таблицы, которая отображает все OperationEntity, которые будут сохранены. Когда пользователь нажимает на одну из ячеек, выполняется сеанс, идущий на другой контроллер представления таблицы. Этот контроллер табличного представления отображает все связанные OperationInput из OperationEntity.

В подклассов NSManagedObject, которые генерировал для меня Xcode, объявляется тип availableInputs типа NSSet?. Я знаю, что наборы не поддерживают порядок своих элементов. Это означает, что я мог бы сохранить входы в таком порядке:

a 
b 
c 

Но когда я забрать его обратно, я мог бы получить его в таком порядке, а не

c 
a 
b 

, но я хочу, входы быть в в том же порядке, в каком они были сохранены!

Как решить эту проблему?

Я подумал о том, чтобы добавить id к OperationInput. Каждый раз, когда я сохраняю новый, я увеличиваю id. Когда я его извлекаю, я сортирую массив по id. Но я уверен, что есть лучший способ сделать это, чем это.

Возможно изменение NSSet? по NSArray? с грубой силой? Это не может работать, не так ли?

Удивительно, что я не нашел никого, кто задал бы вопрос о переполнении стека!

+0

Это * был * был задан и ответил раньше. Вы найдете больше ответов при поиске '[core-data] save order'. –

+0

@MartinR Но этот вопрос кажется действительно устаревшим. Из ответа Эрика Йоханссона я вижу, что это можно сделать лучше, чем добавление 'id'. – Sweeper

+0

В принятом ответе на упомянутый вопрос упоминаются также упорядоченные отношения: * «Если вы можете настроить iOS 5, то вы можете использовать новую функцию NSOrderedSet для произвольно упорядоченных отношений Core Data» *. Это именно то, что предложил Эрик ниже. - Добавление поля id также является хорошим решением и имеет свои преимущества, поскольку упорядоченные отношения могут быть сложными. –

ответ

2

Если вы выберете взаимосвязь и посмотрите в Data Model Inspector, у вас есть опция arrangement. Если вы установите его, у вас будет NSOrderedSet, который будет поддерживать порядок.

enter image description here

+0

Мне нужно снова создать подклассы 'NSManagedObject', правильно? – Sweeper

+0

Да или просто обновите существующий. Swap 'NSSet' для' NSOrderedSet' –

Смежные вопросы