不能用 (@lvalue Bool, ($T5)) 类型的参数列表调用 '!='

cannot invoke '!=' with an argument list of type (@lvalue Bool, ($T5))

标题是我在编译此代码片段@第 3 行时收到的错误消息:

var categoryMatch = (scope == "All") || (candy.category == scope)
var stringMatch = candy.name.rangeOfString(searchText)
return categoryMatch && (stringMatch != nil);

这里有什么问题?

谢谢

我猜函数的 return 类型不只是 Bool

categoryMatch && (stringMatch != nil) 创建布尔值。

也许您的函数 return 类型是 (Bool,Bool) 的元组。 那么您正确的 return 值应该类似于

return (categoryMatch , (stringMatch != nil))

问题是 rangeOfString: return 不能等同于 nilNSRange。而不是检查 location 属性 of NSRange.

您需要将 return 语句更改为:

return categoryMatch && (stringMatch.location != NSNotFound)

参考文献: