web-dev-qa-db-fra.com

Swift Error: espace réservé d'éditeur dans le fichier source

Bonjour, je suis en train de mettre en place une structure de données graphique. Lorsque j'essaie de créer l'application, l'erreur "Erreur de l'éditeur dans le fichier source" s'affiche.

L'implémentation complète du graphique a été extraite de WayneBishop's GitHub à partir d'ici https://github.com/waynewbishop/SwiftStructures

class Path {

var total: Int!
var destination: Node
var previous: Path!

init(){
    //Error happens on next line
    destination = Node(key: String?, neighbors: [Edge!], visited: Bool, lat: Double, long: Double)
     }
}

J'ai changé la classe Node autour de:

public class Node{

var key: String?
var neighbors: [Edge!]
var visited: Bool = false
var lat: Double
var long: Double

init(key: String?, neighbors: [Edge!], visited: Bool, lat: Double, long: Double) {
    self.neighbors = [Edge!]()
     }

}

Cette erreur se produit 5 fois dans le code que j'ai construit jusqu'à présent. Aussi cette question a été posée, mais pas répondu.

Je pense que l'erreur peut être due à mes modifications de la fonction init() dans la classe Node. Avant mes modifications, c'était simplement init(). Si c'est le cas, comment puis-je ajouter des objets à la classe? Pardonnez-moi si je ne suis pas correct dans ma terminologie de programmation, car je suis relativement nouveau en POO.

18
Lucas Crostarosa

tu avais ça

destination = Node(key: String?, neighbors: [Edge!], visited: Bool, lat: Double, long: Double)

qui était le texte de titulaire ci-dessus, vous devez insérer des valeurs

class Edge{

}

public class Node{

  var key: String?
  var neighbors: [Edge]
  var visited: Bool = false
  var lat: Double
  var long: Double

  init(key: String?, neighbors: [Edge], visited: Bool, lat: Double, long: Double) {
    self.neighbors = [Edge]()
    self.key = key
    self.visited = visited
    self.lat = lat
    self.long = long
  }

}

class Path {

  var total: Int!
  var destination: Node
  var previous: Path!

  init(){
    destination = Node(key: "", neighbors: [], visited: true, lat: 12.2, long: 22.2)
  }
}
7
David Yang Liu

Parfois, XCode n'oublie pas la ligne qui avait un "espace réservé pour l'éditeur" même si vous l'avez remplacée par une valeur. Coupez la partie du code où XCode se plaint et collez le code au même endroit pour que le message d'erreur disparaisse. Cela a fonctionné pour moi.

19
Vishal Chaudhry

L'erreur est simple et est due aux mauvais paramètres fictifs que vous avez utilisés dans l'appel de fonction. Dans init, vous ne transmettez aucun paramètre à votre fonction. Ça devrait être comme ça

destination = Node("some key", neighbors: [Edge1 , Edge2], visited: true, lat: 23.45, long: 45.67) // fill up with your dummy values

Ou vous pouvez simplement initialiser avec la méthode par défaut 

destination = Node()

METTRE À JOUR

Ajouter un initialiseur vide dans votre classe Node

init() {

}
1
Vishnu gondlekar