对类内协议的引用通过以下错误:类型名称之后的预期成员名称或构造函数调用



这是我目前的情况:

class FirstViewController: UITableViewController {
...
}
protocol SharedFunctions {
func createEvent(event: Event, text: String)
}
extension FirstViewController: SharedFunctions {
createEvent(event: Event, text: String) {
...
}
}
class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var sharedFunctions = SharedFunctions? // < Xcode error...
@IBAction func postChatMessageAction(_ sender: Any) {
self.sharedFunctions.createEvent(event: event, text: "New Event")
}
...
}

错误:类型名称后出现预期的成员名称或构造函数调用

当我将代码更改为 Xcode 时,建议错误消失,但我在 createEvent 函数上出现错误

var sharedFunctions = SharedFunctions?.self //Xcode suggestion is adding .self

现在我在创建事件函数上收到错误

@IBAction func postChatMessageAction(_ sender: Any) {
self.sharedFunctions.createEvent(event: event, text: "New Event") // < Xcode error...
}

错误:类型"共享函数?"没有成员"createEvent">

我还尝试了以下错误:

weak var delegate = SharedFunctions? // < Xcode error...

错误:"弱"可能仅适用于类和类绑定协议类型,而不适用于"共享函数"。类型'

我想做的是,从我的 SecondViewController 类中,我想触发我在 FirstViewController 类中拥有的函数 createEvent((。

您的 SharedFunctions 声明语法是错误的。它应该是

weak var delegate: SharedFunctions?

试试

class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
//Need change here
var sharedFunctions : SharedFunctions? // < Xcode error...
@IBAction func postChatMessageAction(_ sender: Any) {
self.sharedFunctions.createEvent(event: event, text: "New Event")
}
...
}

首先,FirstViewController的扩展中缺少一个func关键字。尝试实现如下createEvent(event:text:)函数:

extension FirstViewController: SharedFunctions {
func createEvent(event: Event, text: String) {
...
}
}

除此之外,SecondViewControllersharedFunctions财产的声明是错误的。请尝试以下操作:

class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var sharedFunctions: SharedFunctions?
@IBAction func postChatMessageAction(_ sender: Any) {
self.sharedFunctions.createEvent(event: event, text: "New Event")
}
...
}

希望这有帮助。

相关内容

最新更新