2011-09-05 3 views
1

je reçois l'erreur suivanteCoreData avec MapKit sélecteur non reconnu

2011-09-05 08:08:43.506 CaveConditions[7203:11903] -[NSManagedObject coordinate]: unrecognized selector sent to instance 0x7471910 
2011-09-05 08:08:43.507 CaveConditions[7203:11903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject coordinate]: unrecognized selector sent to instance 0x7471910' 

C'est là que je l'appelle

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    request.entity = [NSEntityDescription entityForName:@"Cave" inManagedObjectContext:self.context]; 
    request.predicate = [NSPredicate predicateWithFormat:@"(latitude > 0) AND (longitude > 0)"]; 

    [self.mapView addAnnotations:[self.context executeFetchRequest:request error:NULL]]; 

Il tombe en panne sur la ligne de addAnnotations

Dans mon Cave.h (Il en tant que délégué MKAnnotation)

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

Dans mon Cave.m

- (CLLocationCoordinate2D)coordinate 
{ 
    CLLocationCoordinate2D location; 
    location.latitude = [self.latitude doubleValue]; 
    location.longitude = [self.longitude doubleValue]; 
    return location; 
} 

Suis-je manque quelque chose?

enter image description here

Répondre

4

L'erreur suggèrent que Cave classe n'est pas enregistré en tant que classe pour l'entité Cave dans le modèle de données. Lorsque vous effectuez une extraction, vous obtenez un NSManagedObject générique au lieu d'une instance de la classe Cave.

Vérifiez que le modèle de données contenait le champ à mettre dans le nom d'une sous-classe NSManagedObject personnalisée. Il est probablement encore défini par défaut.

+1

Hm Je ne comprends pas ce que vous voulez dire pardon. J'ai ajouté un printscreen de la partie du modèle. De quoi aurais-je besoin pour le remplir? Et qu'est-ce que ça change? Comme cela fonctionne très bien dans la tableview. – Chris

+4

Le champ intitulé 'class'. Il a actuellement la valeur par défaut de NSManagedObject. Vous devez changer cela en 'Cave'. – TechZen

+0

Cela fonctionne parfaitement. Ai-je besoin de le faire avec tous mes Entinties? Pourquoi est-ce? – Chris

Questions connexes