我在使用SwiftMoment的代码的这一部分遇到了这个问题 https://github.com/akosma/SwiftMoment
public func moment(_ timetoken: Int64) -> Moment {
return moment(Int(timetoken / 10000))
}
我不确定为什么会这样。如果您有任何见解,请随时分享。 谢谢!
这是timetoken值:
timetoken 14915504189961350
它发生在模拟器上 MacOS Sierra 10.12.4
Xcode 8.3.1 iOS 10.3.1 iPhone 5
更新
问题不会出现在iPhone 7上
答案 0 :(得分:4)
iPhone 5是一个32位设备,这意味着Int
is a 32-bit
integer,timetoken / 10000
的结果不适合
Int
。与其他一些编程语言相比,整数溢出是Swift中的致命运行时错误(这很好,因为否则
你会得到一个错误的结果)。
我建议将值转换为TimeInterval
(这是浮点类型,实际上只是Double
的类型别名)然后调用
public func moment(_ seconds: TimeInterval) -> Moment
而不是
public func moment(_ milliseconds: Int) -> Moment