Я изучал это некоторое время и думаю, что есть ряд решений, но я не уверен, что они настолько хороши. Может быть, я что-то упустил: -)
У меня есть две таблицы. Для каждой записи в таблице A есть несколько записей в таблице B. То есть отношения один ко многим. Я наметил это в основных данных и сгенерировал классы. Пока все хорошо.
Мой пользовательский интерфейс на основе табличного представления должен выглядеть следующим образом:
Section 1
Cell 1: Table A: field1
Cell 2: Table A: field2
-----
Section 2
Cell 1: Table B: record 1: field1
Cell 2: Table B: record 2: field1
....
Когда я нахожусь в моем tableView:cellForRowAtIndexPath:
, легко обрабатывать ячейки раздела 1, потому что они отличаются от одной записи таблицы А. Раздел 2 ячейки разные. Каждый раз, когда вызывается tableView:cellForRowAtIndexPath:
, мне нужно получить правильную запись таблицы B из NSSet таблицы A. И это проблема.
NSSet doco указывает, что он не гарантирует заказ. Это означает, что если я хочу конкретную запись, основанную на индексе, у меня есть несколько возможных методов:
- Добавьте дескриптор сортировки в запрос основных данных и используйте быстрое перечисление, чтобы получить нужную запись. Я не знаю, сработает ли это, потому что мы все еще работаем с NSSet.
- Сортировка NSSet с использованием дескриптора сортировки после получения данных для создания NSArray и сохранения их в свойстве перед началом загрузки таблицы.
- Сейчас я думаю о третьем варианте, который заключается в написании декоратора для NSSet, который действует как NSArray и позволяет мне указать поле сортировки и автоматически отслеживает изменения в NSSet. Хитрый, но может окупиться в долгосрочной перспективе.
ни один из этих ответов не кажется настолько великим. Есть лучший способ сделать это?