[英]Error: Editor placeholder in source file, when converting String extension to swift 3
subscript (r: Range<Int>) -> String {
let start = startIndex.advancedBy(r.startIndex)
let end = start.advancedBy(r.endIndex - r.startIndex)
return self[Range(start: start, end: end)]
}
苦苦掙扎將我的String擴展中的上面的下標轉換為swift 3.下面是我在Xcode上按下轉換按鈕后發生的事情。
subscript (r: Range<Int>) -> String {
let start = characters.index(startIndex, offsetBy: r.lowerBound)
let end = <#T##String.CharacterView corresponding to `start`##String.CharacterView#>.index(start, offsetBy: r.upperBound - r.lowerBound)
return self[(start ..< end)]
}
錯誤的屏幕截圖
您需要做的就是在索引前添加characters
。 編譯器還為您提供了一個提示,以添加String.CharacterView corresponding to
start ##String.CharacterView
。 消息可能有點模糊,但它包含很大的價值! 告訴你,那是期待一系列人物。 但是,正如@vadian建議的那樣,你甚至可以從一開始就省略這些characters
。
我也寫了一點測試,只是為了確保。
import Foundation
extension String {
subscript (r: Range<Int>) -> String {
let start = index(startIndex, offsetBy: r.lowerBound)
let end = index(start, offsetBy: r.upperBound - r.lowerBound)
return self[start..<end]
}
}
let string = "Hello world"
let range = Range(uncheckedBounds: (lower: 0, upper: 2))
let s = string[range] // prints "He"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.