使用 NSNumberFormatter 和 RestKit 将 NSCFNumber 转换为 NSNumber 时出错
Posted
技术标签:
【中文标题】使用 NSNumberFormatter 和 RestKit 将 NSCFNumber 转换为 NSNumber 时出错【英文标题】:Error printing NSCFNumber cast as NSNumber using NSNumberFormatter and RestKit 【发布时间】:2012-12-05 23:14:59 【问题描述】:我正在尝试从 JSON 调用中打印/访问我的(双)值并获取:
[事件纬度]:无法识别的选择器发送到实例 0x8d09970
当从同一个对象访问一个字符串值时,它打印得很好。在调试器中,我看到我的值和 event.latitude 被映射为双精度的 NSCFNumber。我不知道这是否只是我没有正确地投射或声明纬度,还是没有正确映射该值。字符串工作
这里有一些代码:
event.h
@interface Event : NSObject
NSNumber *latitude;
@property (nonatomic, retain) NSNumber *latitude;
@end
ViewController.m sn-p
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]]];
【问题讨论】:
【参考方案1】:这绝对不是关于选角的问题。
您遇到的异常是由于缺少 latitude
实现,您可能忘记或打错了。
你有@synthesize
Event.m
实现文件中的属性吗?
【讨论】:
你成功了。我有动态的纬度;应该是合成的。其他属性已合成。【参考方案2】:[Event latitude]: unrecognized selector sent to instance 0x8d09970
表示 Event 对象没有名为“纬度”的方法。
我建议您首先检查以确保您在所有地方都正确拼写了“纬度”(您可能会看五次这种东西,有时却看不到它),并且它是否正确(未)大写。
在那之后我会说你应该确保你没有以某种方式对“事件”有两种不同的定义。您可以创建 Event 的测试实例并直接访问“纬度”属性以确保一切正常。
【讨论】:
以上是关于使用 NSNumberFormatter 和 RestKit 将 NSCFNumber 转换为 NSNumber 时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSNumberFormatter 和 RestKit 将 NSCFNumber 转换为 NSNumber 时出错
NSNumberFormatter maximumFractionDigits 和 maximumSignificantDigits 错误
NSNumberFormatter、NSDecimalNumber 和科学记数法