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
}
}