Вот изображение отношений, которые я обсуждаю:
У меня есть настройка UIScrollView как горизонтальный скроллер, который прокручивается между 3 разными UIViewControllers (конечно, содержащий UITableView и необходимые методы делегата и т. д.)
Каждый ViewController в UIScrollView загружает UITableView определенного MyObjectType.
(например, ViewController1 загружает табличное представление всех MyObjects, где его тип = = MyObjectType.name)
Имеет ли это смысл? Вы заметите, что я установил обратную связь между объектами. MyObjectType может иметь много MyObject, но с MyObject может быть связан только один MyObjectType.
Когда я впервые загружаю один из UIScrollView viewController, мне нужно определить, для чего MyObjectType предназначен этот UITableView. У меня это работает нормально, и я соответствующим образом устанавливаю заголовок таблицы.
Например. [type valueForKey:@"name"]
, где type – это полученный результат NSManagedObject из MyObjectType.
Дело в том, что мне интересно, когда я получаю этот NSManagedObject MyObjectType, у меня также нет доступа к массиву NSSet * (т.е. [type valueForKey:@"objects"]
), который я могу использовать в качестве источника данных UITableView? Будет ли это работать, если после добавления или удаления объекта я сохраню manageContext, а затем всегда [tableView reloadData]
?
Я предполагаю, что это сработает, если мне не требуется, чтобы содержимое UITableView изменялось и обновлялось динамически по мере добавления нового MyObject этого типа? Для этого нам нужен NSFetchedResultsController, верно?
Вот мой код для загрузки ALL MyObject в UITableView (который работает):
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"MyObject" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"creationDate" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:@"transientSectionDate"
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
[sort release];
[fetchRequest release];
[theFetchedResultsController release];
return _fetchedResultsController;
}
Может кто-нибудь ПОЖАЛУЙСТА, будьте так любезны, чтобы показать мое фактическое объявление NSPredicate, которое мне нужно для правильной загрузки ТОЛЬКО MyObject, чей MyObjectType.name == @"XXXXXX"? Предположим, что у меня уже есть MyObjectType.name, хранящийся в сохраненной NSString внутри ViewController.
Заранее спасибо!