Как увеличить String.Index в swift3?

В swift2.3 ++ для увеличения string.index

например. я ++

Я изменил на быстрый 3, что код "Унарный оператор '++' не может быть применен к операнду типа '@lvalue String.Index' (aka '@lvalue String.CharacterView.Index')" в swift 3

Я переписываю например. i + = 1

но этот код не может решить. Пожалуйста, помогите мне.

Ответ 1

String.Index - это шрифт для String.CharacterView.Index. Индекс сам по себе не может быть увеличен. Скорее вы можете использовать index(after:) метод экземпляра в CharacterView, который вы использовали для извлечения индекса.

Например.:

let str = "foobar"
let chars = str.characters

if let bIndex = chars.index(of: "b") {
    let nextIndex = chars.index(after: bIndex)
    print(str[bIndex...nextIndex]) // ba
}

Или, если у вас есть индекс (например, str.startIndex), вы можете использовать метод экземпляра index(_:, offsetBy:), доступный также непосредственно для экземпляров String:

let str = "foobar"
let startIndex = str.startIndex
let nextIndex = str.index(startIndex, offsetBy: 1)
print(str[startIndex...nextIndex]) // fo

Ответ 2

String.Index не имеет ++, += или любого вида оператора (кроме сравнений, например <, >, ==), определенных для него. Он имеет другие методы, определенные для перемещения индекса. Чтобы увеличить позицию индекса 1, код будет выглядеть так: string.index(i, offsetBy: 1)

let string = "Some string"
var i = string.startIndex
i = string.index(i, offsetBy: 1)