Swift 4:不推荐使用“ init”。 CountableRange现在是范围

时间:2018-10-05 05:15:44

标签: swift

我有String这个类别:

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])
    }
}

,Xcode在此行给我警告: return self[Range(i ..< i + 1)]

  

'init'已过时:CountableRange现在为Range。无需进行任何转换。

可惜的是,即使我对Swift很有经验,但我也不知道该如何解决。问题是:如何摆脱这种警告。

谢谢!

1 个答案:

答案 0 :(得分:10)

您不需要Range.init。换句话说,更改:

return self[Range(i ..< i + 1)]

收件人:

return self[i ..< i + 1]