2017-02-01 20 views
0

Crashlyticsサービスレポートいくつかのクラッシュ(約30クラッシュ/ 1000のセッションのために18ユーザー)NSDateFormatter dateFromStringクラッシュ

ここに私のコード:

var brutDate: String = "" 
brutDate <- map["send_date"] 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 

date = dateFormatter.dateFromString(brutDate)! // here is the crash (this is line 42) 

Crashlogがある。この場合、

Crashed: NSOperationQueue 0x170422a80 :: NSOperation 0x170257190 (QOS: UTILITY) 
0 AppName  0x100085f84 specialized SNotification.mapping(Map) ->() (SNotification.swift:42) 
1 AppName  0x100084ff4 SNotification.mapping(Map) ->() (SNotification.swift:29) 
2 AppName  0x100085a78 protocol witness for Mappable.mapping(Map) ->() in conformance SNotification (SNotification.swift:29) 

brutDateの値は2017-01-31 20:02:08

私はありませんアプリをクラッシュさせることはできません...

EDIT:私はフランスにあり、アプリはカナダ向けに配備されていますが、Localeに問題がありますか?

+1

感嘆符は、アプリをクラッシュさせる可能性があります。オプションを安全に処理する方法を学びます。 – vadian

+0

letまたはguardがオプションのダウンキャストを処理するのになぜ使用しないのですか? – Tuhin

+0

はいこれは他の問題であると認識しています。 date変数が設定されていない場合、日付はゼロになります。 –

答えて

2

ロケールの問題またはデバイスの問題が考えられます。デバイスのオフ時間が24時間に設定されている場合は、それがフォーマッタによって使用され、指定したフォーマット文字列が書き換えられます。時間形式を12時間に設定することで、これをローカルで再現することができます。

dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 

これはhereを説明します、これを防ぐ日付フォーマッタのためen_US_POSIXロケールを使用し、それはあなたが変更することなく供給しているフォーマットを使用するようになりますこれに

いずれにしても、!を使用していない方が良いですし、ロギングやエラーが発生したり、文字列から回復できない場合には分かりやすいデフォルト値を提供してください。

関連する問題