设置变量等于if语句条件

时间:2018-07-07 06:06:30

标签: swift if-statement var

我有一个if语句,用于检查数组元素是否与局部变量匹配。

 if pinArray.contains(where: {$0.title == restaurantName})

如何创建该元素的变量? 我尝试过

 let thePin = pinArray.contains(where: {$0.title == restaurantName}) 

但这带有“无法将布尔值转换为MKAnnotation”。

我还尝试了

的变体
let pins = [pinArray.indexPath.row]
let pinn = pins(where: pin.title == restaurantName) (or close to it)

mapp.selectAnnotation(thePin as! MKAnnotation, animated: true)

无济于事。我缺少什么基本步骤?

enter image description here

1 个答案:

答案 0 :(得分:1)

contains(where:)返回Bool,指示是否找到匹配项。它不会返回匹配的值。

所以thePin是一个Bool,然后您尝试将其强制转换为一个MKAnnotation,这当然会崩溃。

如果想要匹配的值,请将代码更改为:

if let thePin = pinArray.first(where: { $0.title == restaurantName }) {
    do {
        mapp.selectionAnnotation(thePin, animated: true)
    } catch {
    }
} else {
    // no match in the array
}

完全不需要contains。无需强制转换(假设pinArrayMKAnnotation的数组)。