Вопрос по objective-c – Индексированные отношения в основных данных

7

Я только начинаю с использования Core Data на iPhone SDK и пытаюсь сохранить упорядоченный список, что-то вроде массива. Однако отношения в Базовых данных выражаются как Наборы при получении. Это затрудняет сохранение порядка, в котором расположены объекты.

Хорошим примером могут быть элементы данных в табличном представлении, когда разрешено изменение порядка элементов. Простым решением было бы включить свойство индекса в управляемый объект.

Рассмотрим следующую иерархию:

Документ & lt; -Много-ко-многим- & gt; DataItem

Различные экземпляры документа могут ссылаться на один и тот же элемент данных, а каждый документ может ссылаться на один или несколько элементов данных. Следовательно, наличие свойства индекса в DataItem приведет к меньшей возможности повторного использования этого экземпляра, то есть вы можете сохранить индекс только для одного экземпляра Document.

Любые идеи о том, как я могу представить иерархию, аккуратно упорядоченную в табличном представлении, но при этом сохранить возможность повторного использования каждого экземпляра DataItem? Спасибо!

Ваш Ответ

3   ответа
3

ment для сопоставления DataItems с позицией в табличном представлении. Помимо того, что один и тот же DataItem может существовать в нескольких позициях, если вам нужно добавить DataItem в несколько документов, это решение также будет работать.

Когда я смотрел на различные стратегии поддержания порядка в Базовых объектах данных, я нашелСообщение блога это объясняет, как сделать это очень подробно, включая пример кода.

7

альтернативный текст http://gallery.me.com/davedelong/100084/Screenshot-20on-202009-07-04-20at-2010-34-56-20AM/web.jpg?ver=12467253090001

Документ может найти свои настоящие dataItems, используя что-то вроде этого:

NSSet * documentDataItems = [[document orderedDataItems] valueForKey:@"dataItem"];

Аналогично, DataItem может найти все свои документы, выполнив то же самое:

NSSet * dataItemDocuments = [[dataItem orderedPositions] valueForKey:@"document"];
Картина кажется сломанной.
@BJ Гомер - спасибо; Очевидно, что twitpic не любит статическое связывание. Вместо этого я загрузил его в MobileMe.
15

то теперь это намного проще. Какао теперь имеет поддержку новогоNSOrderedSet класс, который совместим с Core Data. Эта функциональность также доступна в iOS, хотя требуется iOS 5.0 или более поздняя версия. Это означает, что это не может быть использовано, если вы хотите, чтобы ваше приложение было обратно совместимо с более ранними версиями iOS или OS X.

Все, что вам нужно сделать, чтобы получить порядок, - это открыть редактор модели Core Data, выбрать отношение ко многим и проверить & quot; упорядоченный & quot; Флажок.

Знаете ли вы какую-либо документацию по этому новому API? Я только видел, как это официально обсуждалось в примечаниях к выпуску. Я хотел бы узнать, например, об отображении записей в этом порядке в табличном представлении
В моем первоначальном ответе есть ссылка на ссылку на класс NSOrderSet. Однако я не знаю ничего, что конкретно относится к лучшим вариантам использования в табличных представлениях.
NSOrderedSet в настоящее время также не может использоваться вместе с iCloud.
Я должен что-то упустить, потому что не могу найти, как указать дескрипторы сортировки дляNSOrderedSet вы получите при доступе к собственности. Конечно, вы можете использовать отдельный запрос на выборку с дескриптором сортировки, но тогда какой смысл упорядоченного свойства?

Похожие вопросы