我有一个数组(它是可选的),我尝试过滤。该数组内部有一些自定义结构的实例。他们有一个distance
财产,这是一个String
。现在,过滤数组的条件是这些字符串应该小于或等于某个浮点值(distance
)。下面是代码:为什么我的Swift应用程序在尝试打开可选项时会抛出致命错误?
filteredUnitRestaurants = anotherUnitRestaurant?.filter({ (restaurant) -> Bool in
print (restaurant.distance)
return Float(restaurant.distance)! <= Float(distance)
})
当我实现它,Xcode中抛出一个错误,它说,它意外地发现零而展开的可选值(一个布尔表达式的线)。然而,print
方法打印distance
值,所以它不是零,但是当我改变这样的打印语句:
print (Float(restaurant.distance)!)
它抛出一个错误,太。所以,我认为问题与将字符串值转换为浮点数有关,但distance
的值只是一个数字。当我在控制台上打印它时,它看起来像这样:Optional(10999.795970332603)
所以,我不知道Xcode会发生什么抱怨。你有什么建议吗?
你如何设置'restaurant.distance'? “可选(”可能是字符串的一部分,所以它不能从它创建一个Float。 – dan
@dan,是的你是对的,我通过找到两个位置之间的距离来得到它。为了保存它,我将它的类型更改为String,但String的初始化程序添加了“Optional(”前面的数字 –