【发布时间】:2019-07-31 17:14:32
【问题描述】:
我正在尝试将此Extension 添加到我的代码中,以便按单词枚举子字符串。这段代码的来源是 2015 年,所以这显然是 Swift 的早期版本。我正在使用Swift4.2,但我不知道如何正确更新下面用注释标识的行中的代码。
extension String {
func words() -> [String] {
let range = Range<String.Index>(start: self.startIndex, end: self.endIndex) // THIS LINE CAUSES ERROR
var words = [String]()
self.enumerateSubstringsInRange(range, options: NSStringEnumerationOptions.ByWords) { (substring, _, _, _) -> () in
words.append(substring)
}
return words
}
}
我最初收到此错误:调用中的参数标签不正确(有 'start:end:',预期为 '_:in:')
我按照“修复”提示操作,并将该行更改为:
let range = Range<String.Index>(self.startIndex, in: self.endIndex)
然后,我得到这个错误,没有修复建议:
无法将“String.Index”类型的值转换为预期的参数类型“NSRange”(又名“_NSRange”)
这些错误可能是由于 Swift 版本更新而导致的,我无法弄清楚编写此行的正确方法。
【问题讨论】: