I am trying to print/access my (double) value from a JSON call and get:
[Event latitude]: unrecognized selector sent to instance 0x8d09970
When accessing a string value from the same object, it prints just fine. In the debugger, I see my values and event.latitude is mapped as an NSCFNumber from a double. I don’t know if this is just me not casting or declaring latitude properly, or is something not mapping right for that value. Strings work
Here is some code:
event.h
@interface Event : NSObject {
NSNumber *latitude;
}
@property (nonatomic, retain) NSNumber *latitude;
@end
ViewController.m snippet
Event *event = (Event *)[eventsArray objectAtIndex:indexPath.row];
static NSNumberFormatter *numberFormatter;
if (numberFormatter == nil) {
numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:3];
}
NSLog(@"Event - %@", event.name ); //This works just fine
NSLog(@"Event - %@", event.latitude ); //This is where I am testing different ways of accessing the latitude
NSLog(@"Event - %@", [numberFormatter stringFromNumber:[event latitude]] );
//NSLog(@"Event - %@", [[event latitude] stringValue] );
NSString *coordinatesString = [[NSString alloc] initWithFormat:@"Lat:%@, Lon:%@",
[numberFormatter stringFromNumber:[event latitude]],
[numberFormatter stringFromNumber:[event longitude]]];
That’s definitely not about casting.
The exception you’re getting is due to the lack of a
latitudeimplementation, that you probably forgot or mistyped.Did you
@synthesizethe property in theEvent.mimplementation file?