Swift 通过以下错误引用类内的协议:类型名称后应为成员名称或构造函数调用
这是我目前的情况:Swift 通过以下错误引用类内的协议:类型名称后应为成员名称或构造函数调用,swift,xcode,class,swift-protocols,Swift,Xcode,Class,Swift Protocols,这是我目前的情况: class FirstViewController: UITableViewController { ... } protocol SharedFunctions { func createEvent(event: Event, text: String) } extension FirstViewController: SharedFunctions { createEvent(event: Event, text: String) {
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")
}
...
}
现在我在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...
}
@iAction func postChatMessageAction(\uSender:Any){
self.sharedFunctions.createEvent(事件:事件,文本:“新事件”)//
错误:“SharedFunctions”类型没有成员“createEvent”
我还尝试了以下操作,但出现了一个错误:
weak var delegate = SharedFunctions? // < Xcode error...
弱var委托=共享函数?//
错误:“弱”只能应用于类和类绑定协议类型,而不能应用于“SharedFunctions?”类型
我要做的是,从第二个ViewController类中,我想触发第一个ViewController类中的函数createEvent()。您的SharedFunctions声明语法错误。应该是
weak var delegate: SharedFunctions?
试一试
class SecondViewController:UIViewController、UITableViewDataSource、UITableViewDelegate{
//这里需要零钱吗
var sharedFunctions:sharedFunctions?/
首先,FirstViewController
的扩展名中缺少一个func
关键字。尝试实现createEvent(事件:text:)
函数,如下所示:
extension FirstViewController: SharedFunctions {
func createEvent(event: Event, text: String) {
...
}
}
除此之外,SecondViewController
中的sharedFunctions
属性声明是错误的。请尝试以下操作:
class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var sharedFunctions: SharedFunctions?
@IBAction func postChatMessageAction(_ sender: Any) {
self.sharedFunctions.createEvent(event: event, text: "New Event")
}
...
}
希望这有帮助。将
=
更改为:
此处弱var委托=共享函数?
class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var sharedFunctions: SharedFunctions?
@IBAction func postChatMessageAction(_ sender: Any) {
self.sharedFunctions.createEvent(event: event, text: "New Event")
}
...
}