设置变量等于 if 语句条件

Posted

技术标签:

【中文标题】设置变量等于 if 语句条件【英文标题】:Setting variable equal to if statement condition 【发布时间】:2018-12-15 15:44:07 【问题描述】:

我有一个 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)

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

【问题讨论】:

如果你真的有if pinArray.contains(where: $0.title == restaurantName) // some stuff 这样的代码,那么你绝对可以用let thePin = pinArray.contains(where: $0.title == restaurantName)替换它,然后是if thePin // some stuff 是否在更新中看到任何导致信号 sibart 的内容? 请勿发布代码图片。以文本形式发布代码。 您为什么要强制将Bool 强制转换为MKAnnotationthePin 是一个Bool,表示数组是否包含该值。 我试图创建一个等于 pinArray 的 pin 的变量,该 pinArray 等于/具有与 restaurantName 相同的标题。 【参考方案1】:

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

所以thePinBool,然后您尝试将其强制转换为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 的数组)。

【讨论】:

我不得不问,你在几个项目中都帮助了我 - 谢谢,哈哈 - 但是你是怎么知道这么多的?另外,在 if let 语句中,“first”指的是第一个匹配 restaurantName 的元素? 是的,这是第一场比赛。请参阅first(where:) 的文档。我从 1979 年就开始编程了。

以上是关于设置变量等于 if 语句条件的主要内容,如果未能解决你的问题,请参考以下文章

sql里as出来的数据怎么进行添加判断条件

条件 If 语句:如果行中的值包含字符串...设置另一列等于字符串

shell 脚本 if 条件语句

“python if”语句可以多条件判断吗?

shell脚本之if使用语句进行条件测试

Linux中if-else条件判断语句