クエリがオプションの値を返し、エラーをスローする SQLite ライブラリを使用しています。条件付きで値をアンラップするか、エラーが返された場合は nil を受け取りたいです。これをどのように表現するかは完全にはわかりません。このコードで説明します。これは次のようになります。
func getSomething() throws -> Value? {
//example function from library, returns optional or throws errors
}
func myFunctionToGetSpecificDate() -> Date? {
if let specificValue = db!.getSomething() {
let returnedValue = specificValue!
// it says I need to force unwrap specificValue,
// shouldn't it be unwrapped already?
let specificDate = Date.init(timeIntervalSinceReferenceDate: TimeInterval(returnedValue))
return time
} else {
return nil
}
}
そこにアンラップを強制する必要を避ける方法はありますか? Swift3 に更新する前は、ここでアンラップを強制する必要はありませんでした。
以下が実際のコードです。すべてのエントリから最新のタイムスタンプを取得しようとしています:
func getLastDateWithData() -> Date? {
if let max = try? db!.scalar(eventTable.select(timestamp.max)){
let time = Date.init(timeIntervalSinceReferenceDate: TimeInterval(max!))
// will max ever be nil here? I don't want to force unwrap!
return time
} else {
return nil
}
}