gpt4 book ai didi

ios - fatal error : can not increment endIndex

转载 作者:可可西里 更新时间:2023-11-01 04:33:21 24 4
gpt4 key购买 nike

出于某种原因我得到了

fatal error: can not increment endIndex

在 myRange 行。为什么我会收到此错误?我不明白我的代码有什么问题。

import UIKit

class ViewController: UIViewController {

@IBOutlet var drag: UIPanGestureRecognizer!
@IBOutlet weak var currentLabel: UILabel!
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
@IBOutlet weak var label4: UILabel!
@IBOutlet weak var label5: UILabel!
@IBOutlet weak var label6: UILabel!
@IBOutlet weak var label7: UILabel!
@IBOutlet weak var label8: UILabel!
@IBOutlet weak var label9: UILabel!

let letter = "OX"
var currentLetter = Character!()
var decide = 0
var labelArray = [UILabel]()
var moveCounter = 0
override func viewDidLoad() {
super.viewDidLoad()
getCurrentLetter()
labelArray = [label1,label2,label3,label4,label5,label6,label7,label8,label9]
}

func getCurrentLetter()
{
let myRange = Range<String.Index>(start: letter.startIndex.advancedBy(decide), end: letter.startIndex.advancedBy(decide+1))
currentLabel.text = letter.substringWithRange(myRange)
currentLetter = Character(letter.substringWithRange(myRange))
}

func reset() {
decide = 0
}
@IBAction func dragObject(sender: UIPanGestureRecognizer) {
let points = sender.locationInView(view)
let currentPoints = currentLabel.frame.origin
currentLabel.center = CGPointMake(points.x, points.y)
for item in labelArray {
if CGRectContainsPoint(item.frame, points) {
item.text = String(currentLetter)
decide++
drag.enabled = false
currentLabel.center = currentPoints
} else if drag.enabled == false {
decide++
drag.enabled = true
currentLabel.center = currentPoints
}
if decide == 2 {
reset()
}
getCurrentLetter()
}
}
}

最佳答案

您的问题是 decidedecide+1 比字符串长。值得庆幸的是,有一些内置代码可以解决这个问题。

尝试替换

let myRange = Range<String.Index>(start: letter.startIndex.advancedBy(decide), end: letter.startIndex.advancedBy(decide+1))
currentLabel.text = letter.substringWithRange(myRange)
currentLetter = Character(letter.substringWithRange(myRange))

let end = letter.endIndex.advancedBy(-1, limit: letter.startIndex) //The -1 is actually required, as the 'limit:' bit does <=, not just <
let pos = letter.startIndex.advancedBy(decide, limit: end)
currentLetter = letter[pos]
currentLabel.text = currentLetter

关于ios - fatal error : can not increment endIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35424195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com