错误:在源文件编辑器的占位符,字符串扩展转换为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

+0

http://stackoverflow.com/questions/24092884/get-nth-character-of-a-string-in-swift-programming-language具有用于夫特1,2,3 –

所有你需要做的是在指数前加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" 
+0

串下标方法你甚至可以在两行中都省略“字符”。 – vadian

+0

@vadian谢谢,编辑我的答案。 – dirtydanee

+0

@dirtydanee你绝对的传奇! –