【发布时间】:2015-02-07 21:38:29
【问题描述】:
我在尝试将浮点值存储到 NSNumber 时遇到奇怪的结果。它似乎没有正确存储(或正确打印)。我觉得这是一个愚蠢的错误,但我不知道我做错了什么。这是我的代码:
team.nExpectedScore = [NSNumber numberWithFloat:estimatedScoreSlider.value];
NSLog(@"%f", estimatedScoreSlider.value);
NSLog(@"%f", [team.nExpectedScore floatValue]);
其中nExpectedScore 是team 类的综合属性,声明如下:
@property (strong, nonatomic) NSNumber *nExpectedScore;
虽然我觉得没关系,但是数字是在team类init方法中初始化的(肯定是调用的):
nExpectedScore = [[NSNumber alloc] init];
另外,estimatedScoreSlider 是一个UISlider,范围从 0 到 500。
有了这一切,两个NSLog 语句将打印以下内容并带有随机滑块位置:
2015-02-07 15:32:43.442 APP_NAME[3013:126937] 213.474030
2015-02-07 15:32:43.442 APP_NAME[3013:126937] 0.000000
我希望这两个数字相同。为什么它们不同?
【问题讨论】:
-
某处,您似乎正在重新初始化您的 xExpectedScore 变量,这导致它显示为 0。如果您以后要成为这样的东西,则不需要初始化 NSNumber 变量“ [NSNumber numberWithFloat:estimatedScoreSlider.value]" 因为它返回一个 NSNumber 的实例,它为您初始化该 var 而无需调用 alloc init 方法。尝试删除该 var 的这些语句并报告。
-
NSLog(@"%@", 团队);我敢打赌,它是空的。
标签: objective-c xcode floating-point type-conversion nsnumber