конвертировать строковый индекс в Int - PullRequest
0 голосов
/ 10 июня 2019

У меня есть UILabel с именем nihoshim, и элемент в последнем индексе - это число, которое я хочу увеличить.alpha является коллекцией UIButton.

@IBAction func wordChoser(_ sender: UIButton) {
    let tag = sender.tag - 1
    var liel = nihoshim.text! 
    let index = Int(liel.endIndex) // error here
    var alephbet = ["א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת"]
    if  gameLabel.text!.count <= 3 {
        gameLabel.text = gameLabel.text! + alephbet[alpha.index(after: tag) - 1]
        sender.isHidden = true
    } else if gameLabel.text!.count <= 3 {
        gameLabel.text = gameLabel.text! + alephbet[alpha.index(after: tag) - 1]
        sender.isHidden = true
    }
}

Ошибка:

Инициализатор 'init (_ :)' требует, чтобы 'String.Index' соответствовал'BinaryInteger'

Ответы [ 3 ]

1 голос
/ 10 июня 2019

Чтобы получить последний символ строки, вы можете использовать suffix()

str.suffix(1)

Итак, в вашем коде замените let index = Int(liel.endIndex) на

guard let index = Int(liel.suffix(1)) else {
    return //or some error handling
}
0 голосов
/ 10 июня 2019

Как сказал Султан , вы можете использовать расстояние, как показано ниже,

@IBAction func wordChoser(_ sender: UIButton) {
        guard let liel = nihoshim.text, let morning = gameLabel.text else {
            return
        }
        let tag: Int = sender.tag - 1
        let index: Int = liel.distance(from: liel.startIndex, to: liel.endIndex)
        var alephbet = ["א","ב","ג","ד","ה","ו","ז","ח","ט","י","כ","ל","מ","נ","ס","ע","פ","צ","ק","ר","ש","ת"]
        if morning.count <= 3 {
            gameLabel.text = morning + alephbet[tag]
            gameLabel.text = morning + "\(index + tag)"
            sender.isHidden = true
        }
    }
0 голосов
/ 10 июня 2019

Вы не можете просто преобразовать String.Index в число.

Самый простой способ сделать это, если мы говорим о endIndex, это:

let index = liel.count

Для других индексовэто будет:

let string = "abcd"
let stringIndex: String.Index = string.endIndex
let index: Int = string.distance(from: string.startIndex, to: stringIndex)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...