您好我正在实现图形数据结构。当我尝试构建应用程序时,我得到错误"编辑器占位符在源文件"
完整的图表实现是从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相对较新。
答案 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)
清理构建文件夹 + 建立
即使在修复代码后也可以清除所有错误。