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 [append (answer)]는 범인입니다. 'gameData.append (answer)'를 시도하십시오. –

+0

@DennisVennink 그 고마워요! 내가 그렇게 생각하지 않았다는 것을 믿을 수 없다. – 47goon

답변

0

, 당신은 Array 자체에 append(_:)를 호출 할 필요 요소에가에 가기로되어있어 없습니다.

코드에서 gameData[index].append(answer)gameData.append(answer)으로 변경해야합니다.

관련 문제