使用NSNumberFormatter和RestKit打印NSCFNumber转换为NSNumber时出错

时间:2012-12-05 23:15:00

标签: iphone ios core-data restkit nsnumberformatter

我正在尝试从JSON调用中打印/访问我的(double)值并获取:

[事件纬度]:无法识别的选择器发送到实例0x8d09970

从同一个对象访问字符串值时,它打印得很好。在调试器中,我看到我的值和event.latitude被映射为来自double的NSCFNumber。我不知道这是不是我没有正确地投射或声明纬度,或者是不适合该值的映射。字符串工作

以下是一些代码:

event.h
@interface Event : NSObject  {
    NSNumber    *latitude;
}

@property (nonatomic, retain) NSNumber *latitude;
@end

ViewController.m片段

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]]];

2 个答案:

答案 0 :(得分:0)

[Event latitude]: unrecognized selector sent to instance 0x8d09970表示Event对象没有名为“latitude”的方法。

我建议你先检查一下,确保你在任何地方正确拼写“纬度”(你可以看五次,有时候看不到它),并且它是正确的(非)大写的。

之后我会说你应该确保你不会以某种方式对“事件”有两种不同的定义。您可以创建Event的测试实例并直接访问“latitude”属性以确保一切正常。

答案 1 :(得分:0)

这绝对不是关于施法。

您获得的例外原因是由于缺少latitude实施,您可能会忘记或输入错误。

@synthesize实施文件中的Event.m属性了吗?