iPhone 5シミュレータでコードを実行すると、画像に示されている例外がスローされます。 他のシミュレータでコードを実行するだけでも問題ありません。iPhone 5シミュレータでのみEXC_BAD_INSTRUCTION
このコードでは、私が間違っていた箇所を特定できません。 誰かにこの問題がありますか? (スイフトでInt
の型の別名である)
NSInteger
iPhone 5シミュレータでコードを実行すると、画像に示されている例外がスローされます。 他のシミュレータでコードを実行するだけでも問題ありません。iPhone 5シミュレータでのみEXC_BAD_INSTRUCTION
このコードでは、私が間違っていた箇所を特定できません。 誰かにこの問題がありますか? (スイフトでInt
の型の別名である)
NSInteger
5. が
NSInteger(NSDate().timeIntervalSince1970) * 1000
の結果はiPhoneのような32ビット・プラットフォーム上の32ビット 整数であります1480106653342
(現時点では) の範囲-2^31 ... 2^31-1
の32ビット(符号付き)整数には当てはまりません。 したがって、Swiftは実行を中止します。 (あなたは、具体的&*
よう 「オーバーフロー」の演算子を使用しない限り、それは、いくつかの 他のプログラミング言語で行われているようスウィフトが 整数演算の結果を「切り捨て」しません。)
あなたは64のためにInt64
を使用することができますすべてプラットフォーム上でビット演算:お使いの場合には
Int64(NSDate().timeIntervalSince1970 * 1000)
、文字列が必要な場合:
let lastLogin = String(Int64(NSDate().timeIntervalSince1970 * 1000))
32ビット版と64ビット版のプラットフォームについては分かりませんでしたが、試してみます – Dreanaught
プラットフォームの違いを教えていただきありがとうございます。それは私になぜそれが動作しないことを明らかにした。私たちの与えられた提案を使用しても、firebaseは最初のInt64のようなものではないので、私を助けませんでした。エポック(1970年)以来のミリ秒を得るには、NSDate()を思いついた。timeIntervalSince1970 * 1000 – Dreanaught
@Dreanaught:元のコードと同じように、文字列に変換することができます。 –
NSDate()の代わりに 'Date()'を使用した場合の結果は同じですか? –
実際、そのコードはかなり壮大です。なぜスウィフトのNSIntegerについて言及していますか?または、これがSwift 3ならNSDateに? – matt
また、「user!」とは「クラッシュ・ミー」を意味します。問題がどこにあるのではないと思っても、 'user'が' nil'でないことを確認できないのはちょうど愚かです。 – matt