Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 仅在iPhone 5模拟器中执行错误指令_Swift_Ios Simulator_Ios10 - Fatal编程技术网

Swift 仅在iPhone 5模拟器中执行错误指令

Swift 仅在iPhone 5模拟器中执行错误指令,swift,ios-simulator,ios10,Swift,Ios Simulator,Ios10,在iPhone5模拟器上运行我的代码会引发如图所示的异常。 在任何其他模拟器上运行代码都可以 我不知道我在这一行不起眼的代码中犯了什么错误。 还有其他人有这个问题吗 NSInteger(Swift中Int的类型别名)是32位 32位平台上的整数,如iPhone 5。 结果 NSInteger(NSDate().timeIntervalSince1970) * 1000 是1480106653342(此时),不适合 范围-2^31。。。32位(有符号)整数的2^31-1。 因此Swift中止执行

在iPhone5模拟器上运行我的代码会引发如图所示的异常。 在任何其他模拟器上运行代码都可以

我不知道我在这一行不起眼的代码中犯了什么错误。 还有其他人有这个问题吗

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

NSInteger(NSDate().timeIntervalSince1970) * 1000
1480106653342
(此时),不适合 范围
-2^31。。。32位(有符号)整数的2^31-1
。 因此Swift中止执行。(Swift不会“截断” 整数算术运算的结果,在某些情况下是这样做的 其他编程语言,除非您特别使用 “溢出”运算符,如
和*

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

Int64(NSDate().timeIntervalSince1970 * 1000)
在您的情况下,如果需要字符串:

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

如果使用
Date()
而不是
NSDate()
,结果是否相同?事实上,这段代码非常壮观。你为什么在Swift中提到NSInteger?或者,如果这是Swift 3,到NSDate?也就是说,
user表示“撞毁我”。即使您认为这不是问题所在,但如果不检查
用户
是否为
nil
也是愚蠢的。此外,我当然希望
configureDatabase()
不依赖于您在
期间所做的任何事情,因为
configureDatabase
首先执行,在
self.refuers
设置之前。@matt我对swift和ios开发人员是新手。阅读博客和stackoverflow我想到了这个。该函数只为数据库更改设置一些侦听器。Firebase在数据库()内处理初始化。感谢用户提供的提示。我想我以后会改变的。我不知道关于32位和64位平台的事情,但我会尝试一下。谢谢你关于平台差异的提示。这一点让我明白了为什么它不起作用。使用我们给出的建议对我没有帮助,因为firebase一开始就不喜欢Int64。为了获得Epoc(1970)以来的毫秒数,我提出了round(NSDate()。timeintervalnce1970*1000@Dreanaught:您仍然可以将其转换为字符串,就像您在原始代码中所做的那样,请参阅更新的答案。实际上,没有。结果表明,该值保存为字符串,而不是我最初想要的数字类型(没有小数点)。