索引超出范围致命错误

时间:2017-04-25 11:37:44

标签: arrays swift

func allStrings(inputArray: [String]) -> [String] {
    var a = inputArray
    var b : [String] = []
    var c = a.count


    for i in stride(from: 1, to: c, by: 1) {
        if a[i].lengthOfBytes(using: String.Encoding.utf8) ==      b[0].lengthOfBytes(using: String.Encoding.utf8) {
            b.append(a[i])
        }
        if a[i].lengthOfBytes(using: String.Encoding.utf8) > b[0].lengthOfBytes(using: String.Encoding.utf8) {
            var b = [String]()
            b.append(a[i])
        }

    }

    return b
}

我不明白我的代码有什么问题,当我运行它时,我在控制台中出现此错误。谁知道什么是错的?

  

致命错误:索引超出范围

2 个答案:

答案 0 :(得分:1)

错误是您尝试访问具有0个元素的b

// the array b is empty, so b[0] gives you the error
if a[i].lengthOfBytes(using: String.Encoding.utf8) ==      b[0].lengthOfBytes(using: String.Encoding.utf8) {
            b.append(a[i])
        }
        if a[i].lengthOfBytes(using: String.Encoding.utf8) > b[0].lengthOfBytes(using: String.Encoding.utf8) {
            var b = [String]()
            b.append(a[i])
        }

答案 1 :(得分:0)

您的数组b为空,并且您试图在循环中的第一个if条件中访问它的第0个索引,这实际上并不存在。