Swift 4:';初始';不推荐使用。CountableRange现在是范围
我有这个Swift 4:';初始';不推荐使用。CountableRange现在是范围,swift,Swift,我有这个字符串类别: extension String { subscript (i: Int) -> String { return self[Range(i ..< i + 1)] } subscript (r: Range<Int>) -> String { let range = Range(uncheckedBounds: (lower: max(0, min(count, r.lowerBoun
字符串
类别:
extension String {
subscript (i: Int) -> String {
return self[Range(i ..< i + 1)]
}
subscript (r: Range<Int>) -> String {
let range = Range(uncheckedBounds: (lower: max(0, min(count, r.lowerBound)),
upper: min(count, max(0, r.upperBound))))
let start = index(startIndex, offsetBy: range.lowerBound)
let end = index(start, offsetBy: range.upperBound - range.lowerBound)
return String(self[start ..< end])
}
}
扩展字符串{
下标(i:Int)->字符串{
返回自[范围(i..字符串{
设范围=范围(未选中边界:(下限:最大值(0,最小值(计数,r.lowerBound)),
上限:最小值(计数,最大值(0,r.上限)))
让开始=索引(开始索引,偏移量:range.lowerBound)
让结束=索引(开始,偏移:range.upperBound-range.lowerBound)
返回字符串(self[start..
Xcode在这行给了我一个警告:
返回自[范围(i..
“init”已弃用:CountableRange现在是范围。不需要再转换了
遗憾的是,尽管我对Swift很有经验,但我不知道如何解决这个问题。问题是:如何摆脱这一警告
谢谢大家! 您不需要
范围.init
。换言之,改变:
return self[Range(i ..< i + 1)]
返回自[范围(i..
致:
返回自我[i..
好的,谢谢。在看到您的答案之前,我正在阅读这个(),并尝试了上面的代码,它成功了。将在10分钟内将此标记为答案。@MartinR-这似乎不是重复的。这是一个不同的错误和不同的代码更改。我遗漏了什么吗?对我来说,这看起来像是同一个问题(CountableRange不再是一个单独的类型,转换方法已被删除),同样的解决方案是:用I..
替换I..@MartinR好的,再看一眼,我发现代码的更改是一样的。但鉴于错误消息如此不同,即使解决方案最终与另一个相同,这仍然是一个好问题。@rmaddy:如果您认为合适,请随时重新打开线程。(参考其他问答可能仍然有用,因为它解释了问题的来源。)
return self[i ..< i + 1]