2010-12-10 4 views
3

J'ai un modèle de données avec une entité parent et une entité enfant. L'entité enfant a une relation inverse à plusieurs avec l'entité parent (un enfant peut avoir plusieurs parents). Je suis actuellement en train d'obtenir le nombre de parents d'un enfant en particulier a:Obtention du nombre d'une relation à plusieurs dans les données de base

Parent *doomedParent = [self.fetchedResultsController objectAtIndexPath:indexPath]; 

Child *child = [doomedParent valueForKey:@"child"]; 
int parentCount = [[child valueForKey:@"[email protected]"] intValue]; 

Lorsque vous essayez d'obtenir les parents (relation parent) comptent d'un enfant, je reçois l'erreur suivante:

« Mettre fin app due à l'exception non interceptée 'NSUnknownKeyException', raison: '[valueForUndefinedKey:]: l'entité Child n'est pas une valeur clé codage-conforme pour la clé "parents. @ count".'

Des idées sur ce que je pourrais faire de mal?

+0

Êtes-vous sûr que "parents. @ Count" est une clé. quelle est la valeur de la variable intValue? – euphoria83

+0

@ euphoria83, '" parents. @ Count "' s'appelle un chemin clé dans Cocoa. 'intValue' est un message (pas une variable) envoyé au résultat du message' valueForKey: '(sic) envoyé à' child'. –

Répondre

11

Vous devez utiliser -valueForKeyPath:, et non -valueForKey:, qui ne suit pas les chemins de clé (-valueForKey: est donc plus rapide pour les recherches de clé unique). Cela devrait fonctionner:

int parentCount = [[child valueForKeyPath:@"[email protected]"] intValue]; 
+0

Man, je savais que ça devait être quelque chose de simple. Merci! – avenged

10

Alors que la réponse de Barry Wark est correcte pour l'utilisation KVC, est-il une raison quelconque vous ne vous contentez pas obtenir le nombre de .parentsNSSet, comme ceci:

NSUInteger parentCount = [child.parents count]; 

KVC est super et tout, mais à moins de manquer quelque chose, n'est-ce pas exagéré pour cette situation?

Questions connexes