I am using the below extension in swift 3, but I know it is incorrect because I still get errors. The point of the extension is to get a range of a string using the syntax string[0...2] That will return the string from 0. This is the error I am getting 
extension String {
subscript (i: Int) -> Character {
    return self[self.characters.index(self.startIndex, offsetBy: i)]
}
subscript (i: Int) -> String {
    return String(self[i] as Character)
}
subscript (r: Range<Int>) -> String {
    let start = characters.index(startIndex, offsetBy: r.lowerBound)
    let end = characters.index(start, offsetBy: r.upperBound - r.lowerBound)
    return self[(start ..< end)]
  }
}
 
     
    