EXC_BAD_INSTRUCTION 仅在 iPhone 5 模拟器中

EXC_BAD_INSTRUCTION only in iPhone 5 simulator

运行 我在 iPhone 5 模拟器上的代码抛出了图中所示的异常。 运行 任何其他模拟器上的代码都很好。

在这行不起眼的代码中,我找不到哪里出错了。 还有其他人有这个问题吗?

NSInteger(这是 Swift 中 Int 的类型别名)是 32 位 32 位平台上的整数,例如 iPhone 5。 结果

NSInteger(NSDate().timeIntervalSince1970) * 1000

1480106653342(目前)并且不适合 范围 -2^31 ... 2^31-1 的 32 位(有符号)整数。 因此 Swift 中止执行。 (Swift 不 "truncate" 整数算术运算的结果,因为它是在一些 其他编程语言,除非您专门使用 "overflow" 运算符如 &*.)

您可以在 所有 平台上使用 Int64 进行 64 位计算:

Int64(NSDate().timeIntervalSince1970 * 1000)

对于您的情况,如果需要字符串:

let lastLogin = String(Int64(NSDate().timeIntervalSince1970 * 1000))