Umieszczam NSFetchedResultsController w moim kodzie, więc dostaję to ładne automatyczne cięcie moich danych widoku tabeli.Jak poprawnie skonfigurować NSFetchedResultsController
Przeprowadzam test, aby upewnić się, że wszystko działa poprawnie. Mam jeden obiekt Book w moim stałym magazynie. Najpierw wykonam stary sposób, a potem spróbuję użyć NSFetchedResultsController. Różnica między 2 blokami kodu wynosi zaledwie 2 linie.
Kod bez NSFetchedResultsController:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:kBookEntityName inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];
//The following 2 lines will be replaced by the NSFetchedResultsController
NSMutableArray *mutableFetchResults = [[[self.managedObjectContext executeFetchRequest:request error:nil] mutableCopy] autorelease];
Book *result = (Book*)[mutableFetchResults objectAtIndex:0];
NSString* title = [result valueForKey:@"title"];
NSString* priority = [result valueForKeyPath:@"priority.name"];
[request release];
Teraz zastąpił w linii dla NSFetchedResultsController:
NSFetchedResultsController* fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"title" cacheName:@"BookList"];
Book *result = (Book*)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
wydaje się dość cięte i suche. Pierwszy blok kodu prawidłowo pobiera jednostkę Single Book. Kod z NSFetchedResultsController, jednak nie. Zamiast tego zwraca zero.
Moje pytanie brzmi: czy poprawnie skonfigurowałem NSFetchedResultsController w tym przykładzie?
(uwaga, obiekt fetchedObjects z NSFetchedResultsController jest również zerowa)
Organizacja "tytułowa" to tylko test do jej uruchomienia. Właściwie chcę podzielić według klucza ścieżkę od nazwiska autorów, ale chcę, aby działał na prostym przykładzie. –
To bardzo smutne, że tak naprawdę nie wykonałem pobrania. Nie wiem, dlaczego założyłem, że pobieranie zostało wykonane przy inicjalizacji. Dzięki –
dzięki, że mi pomóc :) – mateusmaso