2017-10-03 3 views
0

このコードに問題があります。私は "レベル1"という名前のテキストファイルから読み込み、行ごとに行おうとしており、.enumerated()関数を使って各行を配列に追加しようとしています。しかし、インデックスを使用して配列を塗りつぶすときに、それが0から始まって印刷されるとクラッシュし、範囲外のものにアクセスしているというエラーが表示されます。どんな助けでも感謝します。 Arrayの最後に、単一の要素を追加するためにテキストファイルからの読み込み中に「インデックスが範囲外です」エラー

var clueString = "" 
var solutionString = "" 
var letterBits = [String]() 
var solutions = [String]() 

var gameData: [String] = [String]() 

func loadLevel() -> [String] { 
    if let levelFilePath = Bundle.main.path(forResource: "level\(1)", ofType: "txt"){ 
     if let levelContents = try? String(contentsOfFile: levelFilePath) { 
      var lines = levelContents.components(separatedBy: "\n") 
      lines = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: lines) as! [String] 

      for (index, line) in lines.enumerated() { 
       let parts = line.components(separatedBy: ": ") 
       let answer = parts[0] 
       let clue = parts[1] 

       gameData[index].append(answer) 
      } 
     } 
    } 
    return gameData 
} 
+0

あなたの文字列を投稿できますか? –

+1

一見すると、 'gameData [index] .append(answer)'が原因であるようです。 'gameData.append(answer)'を試してください。 –

+0

@DennisVennink働いてくれてありがとう!私はそれを考えなかったとは信じられない。 – 47goon

答えて

0

、あなたはArray自体にではなく、に行くことになっています要素にappend(_:)を呼び出す必要があります。

あなたのコードでgameData[index].append(answer)gameData.append(answer)に変更する必要があります。

関連する問題