отобразить DetailsViewController с помощью NSFetchedResultController - PullRequest
0 голосов
/ 18 августа 2010

В моем приложении для iphone есть тема с основными данными для многих - >> вопрос, поэтому каждая тема содержит несколько вопросов, я выяснил, как отобразить список тем в UItableView с помощью NSFetchedResultController, но не могу как мне построить свой FetchedResultController для отображения вопросов по выбранной теме.

Я пытаюсь найти в Интернете аналогичное руководство или пример, но ничего не могу найти.

Как я могу это сделать?

Большое спасибо

Ответы [ 3 ]

3 голосов
/ 18 августа 2010

Вам НЕ необходимо вернуться к NSFetchRequest, чтобы получить объекты на другом конце отношений.Просто спросите у вашего Topic его вопросы.Это даст вам NSSet сущностей, которые являются неисправными.Неисправные объекты занимают ОЧЕНЬ мало памяти, и вы можете легко извлечь 1000 из них.

Если вам нужно отфильтровать их, вы можете выполнить -filteredSetWithPredicate: для NSSetвернулся, но выход на диск расточителен и медленен.

2 голосов
/ 18 августа 2010

Вы не будете использовать NSFetchedResultsController.Вместо этого вы определите свойство в вашем контроллере подробного представления

@property (nonatomic, retain) Topic *topic;

Затем, когда вы создадите свой контроллер подробного просмотра, вы установите свойство на основе темы, выбранной в didSelectRowForIndexPath.

Тогда в вашем подробном представлении это всего лишь вопрос выделения вопросов из объекта Topic с использованием отношения основных данных (topic.questions)

0 голосов
/ 18 августа 2010

Хорошо, я обнаружил, что мне нужно использовать NSPredicate для этого. Теперь я пытаюсь добавить его в свой fetchedResultController следующим образом:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"topic == %@", self.topic];
[fetchRequest setPredicate:predicate];

но получаю ошибку:

'keypath topic not found in entity <NSSQLEntity QuestionItem id=2>'

Как я могу это сделать?

Спасибо

Редактировать

Понял!

необходимо установить обе стороны в модели данных и установить предикат следующим образом:

[NSPredicate predicateWithFormat:@"topic.topicName == %@", self.topic]

...