【发布时间】:2018-10-05 05:15:44
【问题描述】:
我有这个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 非常熟悉,但我不知道如何解决这个问题。问题是:如何摆脱这个警告。
谢谢!
【问题讨论】:
-
@MartinR - 这似乎不是重复的。这是一个不同的错误和不同的代码更改。我错过了什么吗?
-
对我来说看起来像同样的问题(CountableRange 不再是一个单独的类型,转换方法已被删除),同样的解决方案:将
Range(i ..< i + 1)替换为i..<i+1 -
@MartinR OK,再看一遍,我看到代码变化是一样的。但是考虑到错误消息是如此不同,即使解决方案与另一个解决方案相同,这仍然是一个好问题。
-
@rmaddy:如果您认为合适,请随时重新打开线程。 (参考其他问答可能仍然有用,因为它解释了问题的根源。)
标签: swift