Swift错误:源文件中的编辑器占位符

时间:2016-02-03 01:51:42

标签: ios swift class

您好我正在实现图形数据结构。当我尝试构建应用程序时,我得到错误"编辑器占位符在源文件"

完整的图表实现是从WayneBishop的GitHub中提取的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)
     }
}

我将Node类更改为:

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

}

在我到目前为止构建的代码中,此错误发生了5次。此问题也被提出,但没有回答。

我认为错误可能是由于我对init()课程中的Node所做的更改。在我更改之前,它只是init()。如果是,我该如何在课堂上添加对象?如果我的编程术语不正确,请原谅我,因为我对OOP相对较新。

7 个答案:

答案 0 :(得分:28)

有时,XCode不会忘记具有“编辑器占位符”的行,即使您已将其替换为值。剪切XCode抱怨的代码部分,并将代码粘贴回相同的位置,以使错误消息消失。这对我有用。

答案 1 :(得分:7)

你有这个

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

这是上面的占位符文本,您需要插入一些值

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World!");
        doSomething(Main.class);
    }

    public static void doSomething(Class<?> clazz) {
        System.out.println(clazz.getCanonicalName()); //prints Main
    }
}

答案 2 :(得分:5)

转到产品> 清洁构建文件夹

答案 3 :(得分:1)

错误很简单,因为您在函数调用中使用了错误的占位符。在init内,您没有将任何参数传递给您的函数。它应该是这样的

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

或者您可以使用默认方法初始化

destination = Node()

<强>更新

在Node类中添加空的初始化程序

init() {

}

答案 4 :(得分:1)

使用Command + Shift + B后,项目运行正常。

答案 5 :(得分:0)

如果在使用视图控制器而不是UI元素创建序号时遇到此错误,则必须将sender: Any?更改为此

@IBAction func backButtonPressed(_ sender: Any) {
        performSegue(withIdentifier: "goToMainScreen", sender: self)

    }

它将起作用。

答案 6 :(得分:0)

清理构建文件夹 + 建立

即使在修复代码后也可以清除所有错误。