#objective-c #core-data
#objective-c #основные данные
Вопрос:
У меня есть две сущности, изображенные ниже. Как мне получить все Node
s для определенного Trip
объекта? И как мне указать Trip
, который я хочу извлечь?
Комментарии:
1. В противном случае у вас уже есть настройка Core Data и контекст управляемого объекта?
2. ДА. У меня также есть табличное представление, показывающее список поездок, которые отсортированы по
timeStarted
, но я хочу иметь возможность щелкнуть по этой ячейке с датой поездки и перейти к моему другому представлению, которое содержит текстовое представление, чтобы я мог видеть все узлы, сохраненные в этой поездке.3. Смотрите расширенный ответ ниже о том, как с помощью табличного представления очень просто получить вашу поездку, используя objectAtIndexPath:
4. Спасибо. Похоже, мне нужно кое-чему научиться
NSFetchedResultsController
!
Ответ №1:
Предполагая, что у вас есть контекст управляемого объекта, вы будете извлекать группу из Trips, используя контроллер результатов выборки. Вы можете поместить предикат в выборку, и вы получите обратно только записи, которые вы сопоставили. Вам нужно будет просмотреть документацию по NSFetchedResultsController, чтобы узнать, как получить требуемую поездку из CoreData.
Как только вы совершите поездку, легко получить ваши узлы. Вызов:
[trip nodesInTrip]
Вы получите набор обратно.
Если вы используете табличное представление, это еще проще (предполагается, что ваш fetchedResultsController является источником данных вашего табличного представления):
-(void)didSelectRowAtIndexPath:indexPath {
Trip *selectedTrip = [[fetchedResultsController fetchedObjects] objectAtIndexPath:indexPath];
NSArray *arrayOfNodes = [selectedTrip nodesInTrip];