私はフィルタリングしようとする配列(オプションです)を持っています。その配列の内部にはカスタム構造体のインスタンスがあります。彼らはdistance
プロパティを持っています。これはString
です。現在、配列をフィルタリングする条件は、これらの文字列があるfloat値(distance
)以下であることです。ここでは、コードは次のとおりです。私はそれを実装する場合オプションのラップを解除しようとすると、私のSwiftアプリケーションが致命的なエラーを発生させるのはなぜですか?
filteredUnitRestaurants = anotherUnitRestaurant?.filter({ (restaurant) -> Bool in
print (restaurant.distance)
return Float(restaurant.distance)! <= Float(distance)
})
、Xcodeは(論理式の行に)オプションの値をアンラップしながら、それが予期せずにnilを見つけたことを言っている、エラーがスローされます。しかし、それはゼロではありませんので、print
方法は、distance
値を出力しますが、私はこのようなprint文を変更する場合:
print (Float(restaurant.distance)!)
それはあまりにも、エラーがスローされます。だから、私は問題が浮動小数点値に文字列の値を変換することに関連していると思うが、distance
の値は単なる数値です。コンソールに印刷すると、次のようになります。Optional(10999.795970332603)
Xcodeが何を不快にさせるのか分かりません。何か提案はありますか?
「restaurant.distance」はどのように設定していますか? "Optional("はおそらく文字列の一部なので、floatを作成することはできません。 – dan
@dan、そうです、私は2つの場所の間の距離を見つけることでそれを取得します。これを保存するには、その型をStringに変更しますが、Stringの初期化子は、 "オプション("数字の前にあるもの。 –