为什么swift 5中的string.contains(“ text”)无法与字符串一起使用?

时间:2019-08-01 20:52:43

标签: swift string contains

let string = "hello Swift"
if string.contains("Swift") {
    print("exists")
}

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

为什么版本5会出错,该怎么办?

1 个答案:

答案 0 :(得分:2)

当您使用renderFormats(){ const { formats } = this.state; var formatsDOM = undefined; if(formats !== undefined && this.state.selectedFormat !== undefined){ formatsDOM = <Select value={this.state.selectedFormat} onChange={this.onExportChange.bind(this)} disabled={!this.state.customFormatIsSelected} inputProps={{ name: 'Format', id: 'FormatInput', }} > {formats.map( format => this.renderFormatEntry(format))} </Select> } return formatsDOM; } 并将其传递给contains()时,Swift会尝试使用函数的重载,该函数需要某种字符串,例如 contains(__ other:StringProtocol)不属于纯Swift String的函数。相反,它会找到包含(_元素:字符),并且它不能接受String作为参数,而只能接受'String.Element'(又称'字符')。引用contains

您要查找的函数是在String遵循的协议中定义的,称为String,位于StringProtocol内部。

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