存储到' Int'中的整数文字溢出错误

时间:2015-05-22 17:41:39

标签: ios swift

我在归档项目时收到错误消息。如何解决?

static let litersPerUSGallon = NSDecimalNumber(mantissa:UInt64(3785411784), exponent: -9, isNegative:false)
static let litersPerImperialGallon = NSDecimalNumber(mantissa:UInt64(454609), exponent: -5, isNegative:false)
static let kilometersPerStatuteMile = NSDecimalNumber(mantissa:UInt64(1609344), exponent: -6, isNegative:false)
static let kilometersPerLiterToMilesPerUSGallon = NSDecimalNumber(mantissa:UInt64(2352145833), exponent: -9, isNegative:false)
static let kilometersPerLiterToMilesPerImperialGallon = NSDecimalNumber(mantissa:UInt64(2737067636), exponent: -9, isNegative:false)
static let litersPer100KilometersToMilesPer10KUSGallon = NSDecimalNumber(mantissa:UInt64(425170068027), exponent: -10, isNegative:false)
static let litersPer100KilometersToMilesPer10KImperialGallon = NSDecimalNumber(mantissa:UInt64(353982300885), exponent: -10, isNegative:false)

enter image description here

2 个答案:

答案 0 :(得分:5)

在归档期间,代码将针对所有体系结构进行编译 在“架构”下的构建设置中配置。

在32位iOS平台上,Int是32位有符号整数,但不能 保持值3785411784。看来编译器无法推断 在此上下文中,整数文字的类型正确为UInt64

但解决方案很简单:只需省略UInt64()构造函数即可。 mantissa:参数的类型为UInt64,以及整数 即使在32位平台上,literal也被正确地视为64位数字。

NSDecimalNumber(mantissa:3785411784, exponent: -9, isNegative:false)

答案 1 :(得分:1)

您可以使用以下代码将类型设置为Asset.create!(:arrived => "No")

UInt64