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