2016-02-03 12 views
13

Witam wdrażam strukturę danych wykresu. Kiedy próbuję zbudować aplikację I pojawia się błąd „zastępczy redaktor pliku źródłowego”Błąd Swift: zastępczy edytor w pliku źródłowym

Pełne wykres realizacja został wycofany z WayneBishop za GitHub stąd 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) 
    } 
} 

Zmieniłem Node Class dokoł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!]() 
    } 

} 

Ten błąd występuje 5 razy w całym kodzie, który zbudowałem do tej pory. Również to pytanie zostało zadane, ale nie udzielono odpowiedzi.

Myślę, że błąd może wynikać z moich zmian w init() w klasie Node. Przed moimi zmianami było to tylko init(). Jeśli tak, jak mogę dodać obiekty do klasy? Wybacz mi, jeśli nie mam racji w mojej terminologii programistycznej, ponieważ jestem względnie nowy w OOP.

+4

Tak (Cmd + shift + K) Thug Life !!!! – vinidog

+0

@ AhmetAkkök Nie wiem, co zrobiłeś, aby stworzyć taki problem, ale ten błąd * obecnie * nie ma nic wspólnego z tym, co sugerujesz. Jego kod to 'Node (klucz: String?' <- On po prostu musi wstawić zamiast 'String' ?. Oczekuje wartości – Honey

Odpowiedz

7

miałeś to

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

co było miejsce uchwytu tekst powyżej trzeba wstawić niektóre wartości

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

Błąd jest prosty i wynika z niewłaściwych symboli zastępczych użytych w wywołaniu funkcji. Wewnątrz init nie przekazujesz żadnych parametrów do swojej funkcji. Powinien on być w ten sposób

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

Albo można po prostu zainicjować metodą domyślną

destination = Node() 

UPDATE

Dodaj pusty initialiser w swojej klasie Node

init() { 

} 
+1

, więc fałszywe wartości muszą być umieszczone w inicjalizatorze, aby mogły się skompilować? –

+0

Jego nie wartości dummy, musisz zainicjować z danymi dostępnymi z tobą w tym czasie.Jeśli nie możesz przekazać puste dane.Innie użyj drugiej drogi do zainicjowania –

+0

Próbowałem, że i zwraca błąd "Nie można wywołać inicjalizator dla typu 'Węzeł" bez argumentów " –

2

Czasami XCode nie zapomnieć o linię, która miała „Edytor zastępczy”, nawet jeśli otrzymuje ją z wartością. Wytnij fragment kodu, na który składa się XCode, i wklej kod z powrotem do tego samego miejsca, aby komunikat o błędzie zniknął. To działało dla mnie.

Powiązane problemy