代码之家  ›  专栏  ›  技术社区  ›  Glenn Posadas

Swift 4:不推荐使用“init”。CountableRange现在是Range[duplicate]

  •  3
  • Glenn Posadas  · 技术社区  · 7 年前

    我有这个 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。不需要再转换了。

    很遗憾,尽管我对斯威夫特很有经验,但我不知道如何解决这个问题。问题是:如何摆脱这个警告。

    谢谢您!

    1 回复  |  直到 7 年前
        1
  •  17
  •   rmaddy    7 年前

    你不需要 Range.init

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

    收件人:

    return self[i ..< i + 1]