2011-11-07 1 views
0

Je reçois l'erreur suivante. Je ne peux pas comprendre pourquoi, puisque latitude et longitude ont @dynamic dans le fichier d'implémentation, et ils ne sont pas des mots réservés (pour autant que je sache). J'utilise RestKit avec Core Data.Erreur de sélecteur non reconnue avec les getters/setters NSManagedObject

2011-11-06 18:12:23.428 Dark Sky Finder[19407:11903] Creating observation site #1 
2011-11-06 18:12:23.431 Dark Sky Finder[19407:11903] -[ObservationSite setLatitude:]: unrecognized selector sent to instance 0x735fdf0 
2011-11-06 18:12:23.431 Dark Sky Finder[19407:11903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ObservationSite setLatitude:]: unrecognized selector sent to instance 0x735fdf0' 

code qui provoque l'erreur:

if ([ObservationSite count:nil] == 0) 
{ 
    for (int i = 1; i <= 5; i++) 
    { 
     NSLog(@"Creating observation site #%i", i); 
     ObservationSite *site = [ObservationSite object]; 
     site.observationSiteID = [NSNumber numberWithInt:i]; 
     site.name = [NSString stringWithFormat:@"James's Place #%i", i, nil]; 
     site.address = @"Somewhere"; 
     site.latitude = [NSNumber numberWithDouble:30.3605+i]; 
     site.longitude = [NSNumber numberWithDouble:-96.1852+i]; 
     [[[RKObjectManager sharedManager] objectStore] save]; 
    } 
} 

NSFetchRequest *fetchRequest = [ObservationSite fetchRequest]; 
NSArray *sites = [[ObservationSite objectsWithFetchRequest:fetchRequest] retain]; 
for (ObservationSite *site in sites) 
{ 
    NSLog(@"Name: %@", site.name); 
    NSLog(@"Address: %@", site.address); 
    NSLog(@"Latitude: %@", site.latitude); 
    NSLog(@"Longitude: %@", site.longitude); 
} 

ObservationSite fichier d'en-tête:

#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 
#import <MapKit/MapKit.h> 


@interface ObservationSite : NSManagedObject <MKAnnotation> 
{ 
    CLLocationCoordinate2D _coordinate; 
    NSString *_title; 
    NSString *_subtitle; 
} 

@property (nonatomic, retain) NSNumber *observationSiteID; 
@property (nonatomic, retain) NSNumber *latitude; 
@property (nonatomic, retain) NSNumber *longitude; 
@property (nonatomic, retain) NSString *address; 
@property (nonatomic, retain) NSString *name; 

+ (ObservationSite *)mapAnnotation; 
+ (ObservationSite *)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate; 
+ (ObservationSite *)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title; 
+ (ObservationSite *)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title subtitle:(NSString *)subtitle; 

@end 

ObservationSite fichier de mise en œuvre:

#import "ObservationSite.h" 

@implementation ObservationSite 

@synthesize coordinate = _coordinate; 
@synthesize title = _title; 
@synthesize subtitle = _subtitle; 

@dynamic observationSiteID; 
@dynamic latitude; 
@dynamic longitude; 
@dynamic address; 
@dynamic name; 

+ (ObservationSite *)mapAnnotation { 
    return [[[self alloc] init] autorelease]; 
} 

+ (ObservationSite *)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate { 
    return [self mapAnnotationWithCoordinate:coordinate title:nil subtitle:nil]; 
} 

+ (ObservationSite *)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title { 
    return [self mapAnnotationWithCoordinate:coordinate title:title subtitle:nil]; 
} 

+ (ObservationSite *)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title subtitle:(NSString *)subtitle { 
    ObservationSite *annotation = [[[self alloc] init] autorelease]; 
    annotation.coordinate = coordinate; 
    annotation.title = title; 
    annotation.subtitle = subtitle; 
    return annotation; 
} 

@end 

Répondre

2

Whoops - les noms d'attributs J'ai utilisé dans les ObservationSite fichiers d'en-tête/mise en œuvre étaient différents que dans le modèle de données. Je les ai renommés maintenant pour être le même, et cela fonctionne très bien.

Questions connexes