在arm64上将字符串转换为整数?

时间:2014-01-05 20:48:44

标签: ios iphone objective-c nsinteger arm64

我有一小段代码,我注意到arm64目标的代码表现不同。我从JSON数据中获取数字字符串,然后使用integerValue将字符串转换为整数。该字符串通常具有数千个分隔符,以逗号的形式。

在非64位目标上(iPhone 4 / s,5 / s等),一切都运行良好,无论是否有数字分隔的逗号,我都会得到正确的整数。但是,在arm64上,integerValue仅在分隔符逗号之前返回数字的第一个“块”。我已经包含了代码和示例结果,以显示究竟发生了什么:

NSInteger value = [BTCValue integerValue];
[UIApplication sharedApplication].applicationIconBadgeNumber = value;

例如,在非64位目标上: BTCValue = @"54,321.00"value = 54321

在arm64目标上,但是: BTCValue = @"54,321.00"value = 54

value是int还是NSInteger似乎无关紧要,无论如何都会发生同样的事情。有什么东西我不见了吗?我不明白为什么一切都在armv7上正常工作,而不是arm64。

1 个答案:

答案 0 :(得分:4)

您的ARM64设备可能有一个区域设置,导致逗号被视为小数或简称为非数字文本。

一般情况下,最好使用NSNumberFormatter

Apple docs on NSNumberFormatter