Xcode抱怨以下一行:
let primary = UInt32(0x8BC34AFF)
出现此错误消息:
Integer literal '2344831743' overflows when stored into 'Int'
我看到它溢出了有符号整数,但我故意使用了UInt32。我的问题更多的是“这怎么可能”而不是“我该如何修复它”。
答案 0 :(得分:24)
UInt32(0x8BC34AFF)
通过调用初始化程序创建UInt32
。您呼叫的UInt32
初始值设定项为:
init(_ v: Int)
问题是在32位设备(iPhone5及更早版本)上,类型Int
是32位。因此,您传递的常量0x8BC34AFF
会溢出您传递给Int
初始值设定项的UInt32
。
在32位和64位设备上运行此方法的方法是将整数文字转换为类型:
let primary = 0x8BC34AFF as UInt32
或者,将变量声明为UInt32
并仅指定常量:
let primary:UInt32 = 0x8BC34AFF
答案 1 :(得分:0)
如果在尝试运行单元测试之前尚未选择任何设备或模拟器,则也可能会遇到此问题。 (在这种情况下,默认值为Generic iOS Device
)。对于单元测试类中的某些整数值,我已经收到此错误。