2017-04-25 165 views
-2
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 
} 

我不明白我的代码出了什么问题,当我运行它时,控制台中出现此错误。任何人都知道什么是错的?索引超出范围致命错误

fatal error: Index out of range

+2

数组索引在Swift中以**零**开始。 –

+1

另外你的''b'数组最初是**空**,你不能访问'b [0]' - 你期望的是什么? –

+0

必须尝试*调试*代码?你想达到什么目的?在第二个if块中,可以追加到一个* local *变量'b',这是无用的。 –

回答

1

错误是你想访问B的有0个元素

// 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]) 
     } 
0

你的阵列b是空的,您要访问它的第0指数在第一if条件内环路,这实际上不存在。

相关问题