错误:在源文件编辑器的占位符,字符串扩展转换为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)]
}
挣扎上面标转换在我的字符串扩展迅速3.下面是发生了什么事情后,我按在Xcode的转换按钮。错误:在源文件编辑器的占位符,字符串扩展转换为SWIFT 3
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)]
}
错误的Screenshot
答
所有你需要做的是在指数前加characters
。编译器还为您提供了一个提示String.CharacterView corresponding to
开始##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"
http://stackoverflow.com/questions/24092884/get-nth-character-of-a-string-in-swift-programming-language具有用于夫特1,2,3 –