NSNumber,代表编号(.0)不是NSString格式

时间:2015-05-08 12:33:06

标签: ios nsnumber

大家好,

我正在使用私有API,我需要发送整数和双精度值。

对于整数,我没有任何问题,我将整数转换为NSNumber,一切正常。

但是没有十进制数的double(例如46)我的请求被拒绝,因为服务器看到一个应该有一个double的整数。

我的系统管理员告诉我用“.0”发送圆形双值,所以如果我想发送双46,我必须发送46.0。

问题是我无法发送NSString,否则服务器也会拒绝我的请求(它会看到一个应该有一个双字符串的字符串)。

所以这是我的问题:有没有办法将代表性数字添加到NSNumbers?所以我的双46将是NSNumber 46.0

任何人都可以帮助我吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

当您初始化NSNumber时,您应该使用

mynumber = [NSNumber numberWithDouble: myDoublevalue];

如果您想将其发送到服务器,请尝试

[mynumber doubleValue];

答案 1 :(得分:0)

我想问题是:你用什么来创建你的NSNumber?

使用

NSNumber *intNumber = @(46);

会为您提供包含NSNumber的{​​{1}},而

int

应该会生成包含NSNumber *doubleNumber = [NSNumber numberWithDouble:46]; 的{​​{1}}。

(您可以通过拨打NSNumber来查看此信息,这将提供“i”,double将提供“d”)

您可能遇到的另一个问题是您(或您使用的API)使用某种格式转换为JSON或其他内容。

普通JSON转换器将省略[intNumber objCType],因此您可能会收到错误。

因此,如果您有权访问JSON(或者您使用的其他格式转换,因为您永远不会将NSNumber发送到任何服务器),您可以在那里修复它。

最后一点,如果上述两点没有任何帮助,你可以考虑添加一个非常小的数字,这将强制一个点,但在正常情况下不会产生太大的影响:

[doubleNumber objCType