1

将字符串(YaxisData)转换为 NSNumber 时出现问题。我必须为 Core-plot 返回一个 NSNumber 才能完成图表,但它不起作用。这是示例代码

-(NSNumber *)numberForPlot:(CPPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index{

NSNumber *num = [NSNumber numberWithDouble:[[YaxisData objectAtIndex:index] doubleValue]];
return num;

}

num 返回垃圾数据,例如 -1 或 993494949494 但是当我记录数字的双精度值时,它会打印正确的值。我无法返回这个双精度值,因为函数签名只需要返回 NSNumber。

NSLog(@"Number: %f", [num doubleValue]);

我被困在这里,非常感谢这方面的任何帮助。谢谢!

4

1 回答 1

1

这会以某种方式给出更好的结果吗?

NSString *aString = [YaxisData objectAtIndex:index];
NSLog(@"%@", aString);
double value = [aString doubleValue];
NSLog(@"%f", value);
NSNumber *number = [NSNumber numberWithDouble:value];
NSLog(@"%@", number);

如果没有,你能显示NSLog()的结果吗?

我知道在实践中它似乎是相同的代码,但人们可能不太确定-objectAtIndex:总是返回一个字符串。这也可能是本地化问题(小数点分隔符的逗号和点可能会混淆,这肯定会弄乱您的结果。如果出现本地化问题,请查看以下链接:

如何将 NSString 转换为 NSNumber

于 2011-04-21T21:33:22.077 回答