2017-04-25 230 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條件內環路,這實際上不存在。

相關問題