2017-11-03 8 views
0

私はシミュレータとすべてのデバイスで動作するが、アプリケーションが動作しているランダムなデバイスでクラッシュする以下の機能を持っています。ここで何がうまくいかないのでしょうか?クラッシュレポートは私が下でコメントした行を指しています。あなたの時間と助けてくれてありがとう。一部のデバイスでこのInteger Additionがクラッシュするのはなぜですか?

func myTestFunction(date:NSDate)->Int{ 
let formatter = DateFormatter() 
formatter.timeZone = TimeZone.current 
formatter.dateFormat = "HH" 
let hour = Int(formatter.string(from: date as Date)) 
formatter.dateFormat = "mm" 
let minutes = Int(formatter.string(from: date as Date)) 
let tMinutes = (hour! * 60) + minutes! //Crash Here 
return tMinutes 
} 
+0

を試してみてください。 Mohammad Sadiqと@やや危険な答えが正しい方向に私を助けました。 –

答えて

1

あなたはhourminutesをアンラップ力です。それはおそらくクラッシュの原因です。

+0

でも、特定のデバイスで常にクラッシュし、他のデバイスでクラッシュしない理由を理解できません。あなたは解決策を提案できますか?ありがとう –

+0

letまたはguardの場合はアンラップする前に、 –

+0

は時間= Int(formatter.string(from date as Date))としましょう//ここの時間はオプションです。つまり、日付フォーマッタが失敗した場合はnilになる可能性があります。分もオプションです。 tMinutes =(時間!* 60)+分! //!答えの中で言われているように力のアンラップです。これはコンパイラにあなたが知っていることをあなたが知っていることを意味します。 –

0

は持っているが、アンラップ力の前にはnilのチェックを使用し、この

let date = `your date here` 
let calendar = Calendar.current 
let hour = calendar.component(.hour, from: date) 
let minutes = calendar.component(.minute, from: date) 
let total_minutes = (hour*60)+minutes 
関連する問題