我有一个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)
无济于事。我遗漏了什么基本步骤?
最佳答案
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
。不需要强制转换(假设pinArray
是MKAnnotation
的数组)。