Como o String.Index funciona no Swift
Estou atualizando alguns dos meus códigos e respostas antigos com o Swift 3, mas quando cheguei ao Swift Strings e à indexação, foi difícil entender as coisas.
Especificamente, eu estava tentando o seguinte:
let str = "Hello, playground"
let prefixRange = str.startIndex..<str.startIndex.advancedBy(5) // error
onde a segunda linha estava me dando o seguinte erro
'advancedBy' está indisponível: para avançar um índice em n etapas, chame 'index (_: offsetBy :)' na instância do CharacterView que produziu o índice.
eu vejo issoString
possui os seguintes métodos.
str.index(after: String.Index)
str.index(before: String.Index)
str.index(String.Index, offsetBy: String.IndexDistance)
str.index(String.Index, offsetBy: String.IndexDistance, limitedBy: String.Index)
Isso realmente estava me confundindo no começo, então comecei a brincar com eles até entendê-los. Estou adicionando uma resposta abaixo para mostrar como eles são usados.