Swift 将字符串索引转换为Int

Swift 将字符串索引转换为Int,swift,Swift,我有一个名为nihoshem的UILabel,最后一个索引中的元素是我想增加的数字alpha是ui按钮的集合 @IBAction func wordChoser(uu发送方:ui按钮){ 让tag=sender.tag-1 var liel=nihoshim.text! let index=Int(liel.endIndex)//此处出错 var alephbet=[“א”、“ב”、“ג”、“ה”、“ה”、“ח”、“ט”、“י”、“כ”、“ל”、“מ”、“ס”、“ע”、“צ”、“ק”、“ר”、“

我有一个名为
nihoshem
UILabel
,最后一个索引中的元素是我想增加的数字
alpha
ui按钮的集合

@IBAction func wordChoser(uu发送方:ui按钮){
让tag=sender.tag-1
var liel=nihoshim.text!
let index=Int(liel.endIndex)//此处出错
var alephbet=[“א”、“ב”、“ג”、“ה”、“ה”、“ח”、“ט”、“י”、“כ”、“ל”、“מ”、“ס”、“ע”、“צ”、“ק”、“ר”、“ש”、“ת”]

如果gameLabel.text!.count您不能将
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)

要获取字符串的最后一个字符,可以使用
suffix()

因此,在代码中,将
let index=Int(liel.endIndex)
替换为

guard let index = Int(liel.suffix(1)) else {
    return //or some error handling
}
如前所述,您可以使用如下距离

@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
        }
    }
@IBAction func wordChoser(uu发送方:ui按钮){
守卫let liel=nihoshim.text,let morning=gameLabel.text else{
回来
}
let tag:Int=sender.tag-1
let index:Int=liel.distance(从:liel.startIndex到:liel.endIndex)
var alephbet=[“א”、“ב”、“ג”、“ה”、“ה”、“ח”、“ט”、“י”、“כ”、“ל”、“מ”、“ס”、“ע”、“צ”、“ק”、“ר”、“ש”、“ת”]

如果数组为morning.count,
alephbet[alpha.index(after:tag)-1]
应与
alephbet[tag]相同
。但是如何更新结束索引中数字的值?@LHanohov我不明白您想做什么。
endIndex
在您更新字符串时更新,例如在追加或删除字符时。但是如何将其转换为int?现在错误是无法将“int”类型的值转换为预期的参数类型“inout int”@LHanoh首先,我假设你没有像我在回答中那样使用
guard
,因为你有一个可选的Int,其次,我在你的代码中看不到任何可能产生错误的东西。对我来说,看起来我已经回答了你的问题,这是另一个问题。
@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
        }
    }