1

Je suis à la dernière version de XCode (4.5.1) et du simulateur ios 5.1. Donc, voici le problème, j'ai deux entités dans un modèle de données de base, et deux tablesviewcontrollers les représentant. Je voudrais configurer deux NSFetchedResultsControllers (un par tableviewcontroller) qui fonctionnent tous les deux dans le même contexte, mais sur des entités différentes. Lorsque je crée le premier, tout va bien, mais créer le second force EXC_BAD_ACCESS dans la méthode initWithFetchRequest:. Je peux fournir le code utilisé, mais je crois que ce n'est pas nécessaire ici. Fondamentalement, est-ce possible et si ce n'est pas, alors je voudrais voir une meilleure solution à mon problème. EDIT: Code:Plusieurs NSFetchedResultsController sur un seul NSMangedObjectContext

showController.context = managedObjectContext; 

self.showcaseController = [[UINavigationController alloc]initWithRootViewController:showController]; 
self.showcaseController.tabBarItem.title = @"Витрина"; 

categoryController = [[UMCategoriesController alloc] initWithNibName:@"UMCategoriesController" bundle:nil]; 
categoryController.context = managedObjectContext; 

self.categoriesController = [[UINavigationController alloc]initWithRootViewController:categoryController]; 

Donc, fondamentalement, j'ai un UITabBarController rempli de deux UINavigationControllers, chacun commence par UIViewController avec UITableView dans chacun. Je viens de définir NSManagedObjectContext créé dans AppDelegate. C'est le setter de UMShowcaseController.m NSFetchedResultsController. Lorsque j'utilise NSFetchedResultsController seulement ici, cela fonctionne parfaitement.

-(NSFetchedResultsController *) frc 
{ 
if (_frc != nil) 
{ 
    return _frc; 
} 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Goods" inManagedObjectContext:context]]; 
_frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; 
_frc.delegate = self; 
NSError __autoreleasing *error = nil; 

if (![_frc performFetch:&error]) { 
} 
return _frc; 
} 

Mais, quand j'ajoute NSFetchedResultsController à la deuxième UIViewController, UMCategoriesView - il se bloque.

if (_frc != nil) 
{ 
    return _frc; 
} 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Categories" inManagedObjectContext:context]]; 
_frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; //here it fails 
_frc.delegate = self; 
NSError __autoreleasing *error = nil; 

if (![_frc performFetch:&error]) { 
} 
return _frc; 
+0

C'est possible. Vous devriez poster votre code. –

Répondre

0

Damn Je suis. La seule chose qui manque ici est le descripteur de tri dans le second NSFetchedResultsController. Après avoir relu la documentation, tout fonctionne correctement.

Lisez la documentation et n'oubliez pas de définir des descripteurs de tri. Martin, merci pour ton commentaire, c'est toi qui m'a fait relire la documentation.

Questions connexes