Как получить и Int из string.index? - PullRequest
0 голосов
/ 04 июня 2018

swift 4.1, xcode 9.3, приложение какао

Как получить Int из string.index для использования с другим номером свойства?

@IBOutlet weak var inputFromTextField: NSTextField!
@IBAction func button(_ sender: NSButton) {
    let temporaryHolder = inputFromTextField.stringValue.characters
    for input in temporaryHolder {
        let distance = temporaryHolder.index(of: input)
        print(input)
        print(distance + 100)
}

код ошибки:

Двоичный оператор '+' нельзя применить к операндам типа 'String._CharacterView.Index?'(иначе 'Необязательный ') и 'Int'

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете использовать distance(from:to:) для вычисления (целочисленного) расстояния от String.Index до начальной позиции строки:

let str = "abab"
for char in str {
    if let idx = str.index(of: char) {
        let distance = str.distance(from: str.startIndex, to: idx)
        print(char, distance)
    }
}

Но учтите, что index(of:) возвращает сначала индекс символа в строке, поэтому приведенный выше код будет печатать

a 0
b 1
a 0
b 1

Если вы хотите получить смещение бега вместе с каждым символом в строке, используйте enumerated()

for (distance, char) in str.enumerated() {
    print(char, distance)
}

Это напечатает

a 0
b 1
a 2
b 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...