2009-12-09 4 views
0

Lorsque j'essaie de configurer une cellule dans un UITableViewController qui a un NSFetchedResultsController, j'obtiens une erreur dès que j'essaie d'accéder à managedObject. L'erreur est:Problème NSFetchedResultsController

2009-12-08 16:21:47.610 Take10[4837:20b] *** NSInvocation: warning: object 0xa08dd140 of class 'List' does not implement methodSignatureForSelector: -- trouble ahead 
2009-12-08 16:21:47.610 Take10[4837:20b] *** NSInvocation: warning: object 0xa08dd140 of class 'List' does not implement doesNotRecognizeSelector: -- abort 

Voici mon code, accident vient en essayant de mettre en place l'objet géré:

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

// Get the managedObject 
NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:indexPath]; 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 

// Set up the cell... 
cell.textLabel.text = [managedObject valueForKey:@"listName"]; 

return cell; 
} 

Je l'ai regardé le code de classe pour la managedBobject qui est récupéré par le récupère, et ça a l'air bien, une classe générée automatiquement à partir de mon modèle de base de données. Si j'utilise une autre entité du modèle dans le même fetch, tout fonctionne parfaitement.

Des idées?

Merci

Répondre

2

Trouvé le problème: la liste de nom de classe n'est pas valide. Je l'ai changé pour CheckList et tout va bien.

Jk

+0

Attention, même erreur pour les sous-classes de NSManagedObject nommées "Object"! – Christoph

2

J'ai toujours utilisé la classe réelle entité qui a été récupéré - ressemble à « Liste » dans votre cas - plutôt que de l'appeler un NSManagedObject (List *list = [fetchedResultsController objectAtIndexPath:indexPath]). Je ne soupçonnerais pas cela seulement à partir du message d'erreur, mais c'est la seule chose qui m'a regardé.

Edit: Il est peu probable que le problème, mais il est ma dernière supposition - vous êtes sûr que vous avez importé « list.h »? Sinon, il pourrait penser que c'est juste 'id'. Les méthodes dont il se plaint sont implémentées dans NSObject, donc je ne peux pas imaginer qu'elles ne soient pas là.

+0

Oui, j'ai essayé, mais l'erreur est la même. Il sait que l'objet géré est de type Liste, mais pense qu'il y a un problème avec la classe pour une raison quelconque. – Alpinista

+0

@Alpinista Je pense que ce gars mérite au moins un vote de votre part parce qu'il était assez proche du problème. – occulus

+0

@Occulas vous avez raison. J'ai voté sa réponse. – Alpinista

0

Votre classe de modèle hérite-t-elle de NSObject? Cette erreur se produit généralement lorsque ce n'est pas le cas.

+0

Lorsque vous créez votre classe à partir de l'éditeur de modèle, elle doit hériter de NSManagedObject par défaut. – lyonanderson

+0

Oui, la classe est de type NSManagedObject. Les deux autres entités du modèle fonctionnent correctement. Pourrais-je avoir causé un problème lors du pré-remplissage de la table dans le SQLLite dB? – Alpinista

+0

Peut-être, fonctionne-t-il à partir d'une base de données propre? – lyonanderson

Questions connexes