【问题标题】:Why does string.contains ("text") not work with strings in swift 5?为什么 string.contains ("text") 不适用于 swift 5 中的字符串?
【发布时间】:2019-12-10 12:17:26
【问题描述】:
let string = "hello Swift"
if string.contains("Swift") {
    print("exists")
}

无法将“String”类型的值转换为预期的参数类型“String.Element”(又名“Character”)

为什么版本 5 会出现这样的错误,我该怎么办?

【问题讨论】:

  • 你需要import Foundation
  • 我刚刚在 swift-5.0.2 上尝试了您的代码,一切正常。

标签: swift string contains


【解决方案1】:

当你使用contains() 并传递一个String 时,Swift 会尝试使用函数的重载,该函数采用某种字符串,例如 contains(_ other: StringProtocol) 函数,即不是纯 Swift String 的一部分。相反,它会找到 contains(_ element: Character),它不能接受 String 作为参数,只接受 'String.Element'(又名 'Character')。参考contains

您要查找的函数在 String 符合它的协议中定义,称为 StringProtocol,位于 Foundation 中。

因此,如果您需要它,请确保您使用 import Foundation 或更高级别的框架,例如 UIKit

【讨论】:

  • 添加更多细节,它来自StringProtocol,您可以在contains 的文档中看到它来自Foundation。
猜你喜欢
  • 2019-03-06
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多