【问题标题】:Problem when converting NSString to NSNumber in iPhone在 iPhone 中将 NSString 转换为 NSNumber 时出现问题
【发布时间】:2010-07-02 19:56:30
【问题描述】:

将字符串 (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]);

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

【问题讨论】:

  • 什么是YaxisData,它来自哪里?
  • 我错过了什么?三个输入参数,一个都没用到,而是另一个我们一无所知的变量。
  • @Franci Penov:YaxisData 是一个将数字存储为字符串的数组。 @Eiko:这是一种核心绘图方法,用于获取每一行的数据,以便绘制图表。该方法的作用是最不重要的。我只想知道将字符串数组转换为 NSNumber 的正确方法。

标签: iphone nsstring core-plot nsnumber


【解决方案1】:

这会以某种方式产生更好的结果吗?

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

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

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

How to convert an NSString into an NSNumber

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2023-04-05
    • 2011-04-27
    • 2010-11-29
    相关资源
    最近更新 更多