2016-06-14 18 views
-1

Ich kann nicht verstehen, wo Fehler ist. Bitte helfen Sie mir, dieses Problem zu lösen.fataler Fehler Index außerhalb des Bereichs

Dies ist mein Code:

import SpriteKit 

class EncounterManager { 
    let encounterNames: [String] = ["EncounterName1", 
            "EncountersName2", 
            "EncountersName3"] 
    var encounters: [SKNode] = [] 

    var currentEncounterIndex:Int? 

    var previousEncounterIndex:Int? 


    init() { 
     for encounterFileName in encounterNames { 
      let encounter = SKNode() 
      if let encounterScene = SKScene(fileNamed: encounterFileName) { 
       for placeholder in encounterScene.children { 

        if let node = placeholder as? SKNode { 

         switch node.name! { 
         case "N" : 
          let n = N() 
          n.spawn(encounter, position: node.position) 

         case "NN": 
          let nn = NN() 
          nn.spawn(encounter, position: node.position) 

         case "NNN": 
          let nnn = NNN() 
          nnn.spawn(encounter, position: node.position) 

         case "GGG": 
          let ggg = GGG() 
          ggg.spawn(encounter, position: node.position) 

         case "GG": 
          let gg = GG() 
          gg.spawn(encounter, position: node.position) 

         case "G": 
          let g = G() 
          g.spawn(encounter, position: node.position) 

         case "F": 
          let f = F() 
          ff.spawn(encounter, position: node.position) 

         default: 
          print("Name error: \(node.name)") 
        } 
       } 
      } 
     } 
    } 
} 

    func addToWorld(world:SKNode) { 

     for index in (encounters.count).stride(through: 0, by: -1) { 

      encounters[index].position = CGPoint(x: -2000, y: index * 1000) 
      world.addChild(encounters[index]) 

     } 

    } 

} 

Dies ist Fehler von der Konsole:

fatal error: Index out of range 

Dies ist Zeile, in dem Fehler:

encounters[index].position = CGPoint(x: -2000, y: index * 1000) 

Dies ist Leitungsfehler:

EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP, subcode=0x0) 

Ich habe versucht, einige Informationen zu diesem Problem im Internet zu finden, kann es aber nicht finden.

+2

* Hinweis: * Was ist der Index des letzten Elements in einem Array mit 'count' Elementen? –

Antwort

1

Ändern Sie diese Zeile:

for index in (encounters.count).stride(through: 0, by: -1) 

Um dies:

for index in (encounters.count.predecessor()).stride(through: 0, by: -1) 

Sie erhalten den Fehler, da die erste Version mit der Schrittweite von encounters.count beginnt, die man hinter dem letzten gültigen Index ist.

+2

Oder: 'für den Index in den Begegnungen.indices.reverse() ...' –

+0

@Viktor Simkó Es hilft, es in der ersten Datei zu beheben, aber jetzt habe ich diesen Fehler in einer anderen Datei. In Zeile: 'BegegnungManager.encounters [0] .position = CGPoint (x: 300, y: 30) ' – antoshkaaa

+0

@MartinR Es hilft, es in der ersten Datei zu beheben, aber jetzt habe ich diesen Fehler in einer anderen Datei. In Zeile: 'encounterManager.encounters [0] .position = CGPoint (x: 300, y: 30) ' – antoshkaaa

Verwandte Themen