2017-04-10 14 views
3

に私はそれがhappenningだ理由はわからないSwiftMoment https://github.com/akosma/SwiftMomentEXC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0の)迅速

public func moment(_ timetoken: Int64) -> Moment { 
    return moment(Int(timetoken/10000)) 
} 

とコードのこの部分には、この問題に実行しています。洞察力がある場合は、自由に共有してください。 ありがとう! timetoken 14915504189961350

それはシミュレータ MacOSのシエラに起こっ10.12.4

のXcode 8.3.1 のiOS 10.3.1 iPhone 5

:ここ

enter image description here

はtimetoken値であり、

更新

問題がiPhone 7

+1

を呼び出すことになりますあなたは完全なスタックトレースを持っていますか? – kennytm

+0

私はxcodeに少し新しいです。私はより多くの情報を追加しました。どのようにして完全なスタックトレースを共有できますか? –

+0

'timetoken'の値は何ですか?エラーはどこで発生しますか? Mac/iOSデバイス/シミュレータ? 32ビットまたは64ビットプラットフォーム? –

答えて

3

に表示さdoesntのiPhone 5は、Int is a 32-bit integerことを意味する32ビットデバイス、であり、timetoken/10000の結果は Intに適合しません。他のいくつかのプログラミング言語とは対照的に、整数オーバフローはSwiftの致命的なランタイムエラーです(そうでなければ、 は間違った結果になるため)。

Iは 代わりTimeIntervalに値を変換することを示唆している(浮動小数点型、Doubleための実際だけタイプの別名である)、次いで

public func moment(_ seconds: TimeInterval) -> Moment 

代わりに

public func moment(_ milliseconds: Int) -> Moment 
関連する問題