Привет, у меня есть развивающаяся базовая модель данных, как указано ниже:
lookup -> detail -> itemDetail
lookup находится на верхнем уровне, и для каждого 1 объекта может быть много деталейи для каждой сущности в деталях может быть 1 в itemDetail.
До реализации itemDetail в моем "движке" основных данных у меня есть следующий метод:
`- (NSFetchedResultsController *){
// if controller already created and the caller does not need a new one...
if (fetchedResultsController != nil && !needsNewFetchedResultsController) {
return fetchedResultsController;
}
// we must flush the class cache first
[NSFetchedResultsController deleteCacheWithName:@"searches"];
// then set to nil to remove existing data
self.fetchedResultsController = nil;
// resetflag back to NO for future calls into this method
self.needsNewFetchedResultsController = NO;
// all the search results are in the "SearchDetail" table and categorised by the resource type
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"resource_type == %@ AND lookup.search_phrase == %@", self.resource, self.searchText];
// create the fetch request and set the predicate
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.predicate = predicate;
// hook up to the required table
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SearchDetail" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];
// NSFetchedRequestController wants a sort, but we dont so just use type field to placate it ;-)
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"resource_type" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.context
sectionNameKeyPath:nil
cacheName:@"searches"];
self.fetchedResultsController = theFetchedResultsController;
self.fetchedResultsController.delegate = self;
[theFetchedResultsController release];
[sort release];
[fetchRequest release];
return self.fetchedResultsController;
} `
Это позволяет мне извлекать данные из деталей для поиска, выполняемого при поиске, и все работает хорошо.
Но теперь, когда я включил itemDetailТеперь мне нужно получить данные из itemDetail, когда выбрана подробная запись ...... но NSFetchedResulstController в моем ядре данных настроен, как указано выше, для другого запроса?
Нужно ли иметь несколькометоды для различных NSFetchedResultsController или мне нужно выполнить какую-либо форму проверки флагов в существующей?
По мере роста моей модели я вижу, как это перерастает в abк востоку от проблемы, поэтому нужно предпринять это скорее раньше, чем слишком поздно!
В надежде ....