为什么我收到“错误指令”错误?

时间:2016-03-18 18:39:42

标签: swift

我已经测试过在调用函数时输入正确和错误的索引,并且已经发现只有第二个if语句是导致问题的原因。我不知道该怎么办,因为两个if语句都非常相似我找不到问题。我重置了第二个if语句,将changeThis更改为只有第一个,这也没有用,所以我只是将它改回aWordCharacters.count方法......请帮助!!

// to define a custom index, and asign it a new custom position

func rearangeALetter( aWord: String, var changeThis: Int, var withThis: Int) -> (codedWord:String, fromTo: String) {
    let aWordCharacters: [Character] = wordSeperator(aWord)
    let changeCharacter: Character = aWordCharacters[changeThis]
    var finalWord: [Character] = aWordCharacters

    finalWord.removeAtIndex(changeThis)

    if withThis > aWordCharacters.count {
        withThis = 0
    }

    if changeThis > finalWord.count {
        changeThis = aWordCharacters.count
    }

    finalWord.insert(changeCharacter, atIndex: withThis)

    let returnWord = combineWords(finalWord)

    return (returnWord, "Letter number \(changeThis + 1) has been switched with letter number \(withThis + 1 )")
}

rearangeALetter("Hello", changeThis: 101, withThis: 100)

1 个答案:

答案 0 :(得分:0)

数组中索引的有效范围是从0到count - 1,而不是从0到count。我认为您需要更改第二个if:

class KmInput(NumberInput):
    def _format_value(self, value):
        return str(value / 1000)
但是,那说,我不确定你要完成什么,所以我不会发誓。由于您实际上没有使用if changeThis > finalWord.count { changeThis = aWordCharacters.count - 1 } 来索引数组,因此它实际上也不会解决崩溃问题。

啊,在使用索引之前,还需要进行边界检查(两个if语句):

changeThis