私は私の文字列を変換する場合NSDate
、それが戻っていますnil
そしてエラーを表示します:
致命的なエラー:オプション値のアンラップ中に予期せずnilが見つかりました
例:日付= 2016年8月9日9:45:19 AM
convertDate(DateString:String) -> NSDate{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy hh:mm:ss a"
let date = dateFormatter.dateFromString(DateString)
print(date) // return nil
return date!
}
あなたは理由が何であるかを導くことができますか?
問題は、あなたdateFormatter
がそれを使うように言ったのでDateString
、dateFormat
あなたがそれを渡しているあなたがそれを変換することができないということです。
したがって、それはあきらめて戻りますnil
。つまり、この行を実行すると、次のようになります。
let date = dateFormatter.dateFromString(DateString)
の値date
はnil
次に、の値を取得して、ここに表示されているように、date
「この値を強制的にアンラップして返します。ゼロかどうかは関係ありません」と言います。
return date!
関数はNSDate
...を返すことが期待されているため、常にインスタンスを返すことを保証しNSDate
、ではなくインスタンスを返すことを保証しますnil
。次にnil
、アプリがキールする可能性のあるもの(この場合は)を強制的にアンラップするように指示します。強制的にアンラップしようとしますdate
。
一般に、Swiftで物事を強制的にアンラップすることは、値がそうでないことが絶対に確実でない限り、ほとんどの場合悪い考えですnil
。
したがって、考慮すべき点がいくつかあります。
あなたはDateString
実際にどのように見えますか?dateFormat
この値は解析できないため、その文字列または文字列に何か問題があるはずです。
あなたはいつもを返す必要がありますNSDate
か?または、代わりにオプションを返し、メソッドの呼び出し元に、convertDate
メソッドが何か有用なものを返すかどうかを心配させることはできますか?
それがあなたに何かを働かせることを願っています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加