大家好,
我正在使用私有API,我需要发送整数和双精度值。
对于整数,我没有任何问题,我将整数转换为NSNumber,一切正常。
但是没有十进制数的double(例如46)我的请求被拒绝,因为服务器看到一个应该有一个double的整数。
我的系统管理员告诉我用“.0”发送圆形双值,所以如果我想发送双46,我必须发送46.0。
问题是我无法发送NSString,否则服务器也会拒绝我的请求(它会看到一个应该有一个双字符串的字符串)。
所以这是我的问题:有没有办法将代表性数字添加到NSNumbers?所以我的双46将是NSNumber 46.0
任何人都可以帮助我吗?
提前致谢。
答案 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