0

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

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

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

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

然而,在 arm64 目标上: BTCValue = @"54,321.00"value = 54.

是int还是NSInteger似乎并不重要value,无论如何都会发生同样的事情。有什么我想念的吗?我不明白为什么在 armv7 上一切正常,但在 arm64 上却不行。

4

1 回答 1

4

很可能您的 ARM64 设备的语言环境设置导致逗号被视为十进制或简单地视为非数字文本。

一般来说,你最好使用NSNumberFormatter.

苹果文档在NSNumberFormatter

于 2014-01-05T20:54:13.800 回答