二元运算符“==”不能应用于“字符串?”类型的操作数和 Swift 3 中的“布尔”
Posted
技术标签:
【中文标题】二元运算符“==”不能应用于“字符串?”类型的操作数和 Swift 3 中的“布尔”【英文标题】:Binary operator '==' cannot be applied to operands of type 'String?' and 'Bool' in Swift 3 【发布时间】:2017-05-08 10:23:36 【问题描述】:var is_searching: String? = nil
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath as IndexPath) as! ProductCell
if is_searching == true
cell.lblBrndname?.text=(searched_array[(indexPath as NSIndexPath).row] as AnyObject).value(forKey: "brand_name") as? String
cell.Pdtimg?.image = UIImage(named: icon_Array[indexPath.row])
else
cell.lblBrndname?.text=(Specarray[(indexPath as NSIndexPath).row] as AnyObject).value(forKey: "brand_name") as? String
cell.Pdtimg?.image = UIImage(named: self.icon_Array[indexPath.row])
return cell
【问题讨论】:
问题是什么? 你应该如何比较String
是否是true
?您只能将String
与另一个String
进行比较。
如何将字符串与布尔值进行比较?
【参考方案1】:
改变isSearching的类型
var is_searching: Bool = false
【讨论】:
【参考方案2】:NSString 有一个可以使用的 boolValue 属性:
if let is_searching = is_searching as? NSString,
is_searching.boolValue == true
print("String is true")
else
print("String is not true")
但其他海报的想法更好。如果您可以重写代码,那么 is_searching 首先是一个布尔值,这将是更好的方法。
【讨论】:
以上是关于二元运算符“==”不能应用于“字符串?”类型的操作数和 Swift 3 中的“布尔”的主要内容,如果未能解决你的问题,请参考以下文章
二元运算符“==”不能应用于“布尔”和“字符串?”类型的操作数对于 2020 年的 Swift [重复]
二元运算符'+'不能应用于'String'和'() -> String'类型的操作数
二元运算符 % 不能应用于 UInt32 和 int 类型的操作数