2016-02-03 7 views
13

Ciao Sto implementando una struttura di dati del grafico. Quando provo a costruire l'applicazione del ottengo l'errore "segnaposto Editor nel file sorgente"Errore Swift: segnaposto dell'editor nel file sorgente

Il grafico piena attuazione è stato tirato da GitHub di WayneBishop da qui 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) 
    } 
} 

ho cambiato il Node Classe intorno a:

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!]() 
    } 

} 

Questo errore si verifica 5 volte in tutto il codice che ho creato finora. Anche questa domanda è stata posta, ma non ha risposto.

Penso che l'errore potrebbe essere dovuto alle mie modifiche allo init() nella classe Node. Prima delle mie modifiche era solo init(). Se lo è, come posso aggiungere oggetti alla classe? Perdonami se non sono corretto nella mia terminologia di programmazione, dato che sono relativamente nuovo a OOP.

+4

Sì (Cmd + MAIUSC + K) Thug Life !!!! – vinidog

+0

@ AhmetAkkök Non so cosa hai fatto per creare un problema del genere, ma questo errore * attualmente * NON ha a che fare con ciò che suggerisci. Il suo codice è 'Node (key: String?' <- Deve semplicemente inserire invece di 'String'?. Si aspetta un valore – Honey

risposta

7

avevi questo

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

che era posto il testo titolare sopra è necessario inserire alcuni valori

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) 
    } 
} 
1

L'errore è semplice ed è dovuto a segnaposto errati utilizzati nella chiamata di funzione. All'interno di init non si passa alcun parametro alla propria funzione. Dovrebbe essere in questo modo

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

Oppure si può semplicemente inizializzare con metodo predefinito

destination = Node() 

UPDATE

Aggiungi initialiser vuoto nella classe Nodo

init() { 

} 
+1

quindi i valori fittizi devono essere inseriti nell'inizializzatore affinché possano essere compilati? –

+0

non è un valore fittizio, è necessario inizializzarsi con i dati disponibili con te in quel momento.Se non è possibile passare i dati vuoti.Altro utilizzare il secondo modo per inizializzare –

+0

Ho provato e restituisce un errore "Impossibile richiamare l'inizializzatore per tipo 'nodo' senza argomenti' –

2

A volte, XCode non dimentica la linea che ha avuto un "Editor segnaposto" anche se è stato sostituito con un valore. Taglia la parte del codice in cui XCode si sta lamentando e incolla il codice nello stesso posto per far sparire il messaggio di errore. Questo ha funzionato per me.