【发布时间】:2018-03-23 23:49:50
【问题描述】:
我想调用一个函数并使用#selector 为其提供参数。但是,我得到了错误:
“'#selector' 的参数不引用 '@objc' 方法、属性或初始化程序”
@objc func changeCrypto(crypto: String) {
//stuff
}
func constructMenu() {
let menu = NSMenu()
menu.addItem(NSMenuItem(title: "Bitcoin", action: #selector(changeCrypto(crypto: "bitcoin")), keyEquivalent: "B"))
menu.addItem(NSMenuItem(title: "Ethereum", action: #selector(changeCrypto(crypto: "ethereum")), keyEquivalent: "E"))
menu.addItem(NSMenuItem(title: "Litecoin", action: #selector(changeCrypto(crypto: "litecoin")), keyEquivalent: "L"))
menu.addItem(NSMenuItem.separator())
menu.addItem(NSMenuItem(title: "Quit It", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))
statusItem.menu = menu
}
【问题讨论】:
-
我不知道swift,但我猜是因为你实际上是在执行
changeCrypto,所以你传递的是changeCrypto的返回值而不是比changeCrypto本身 -
在您的问题中发布完整而准确的错误消息。
-
@rmaddy 这是完整的错误信息
-
@JDB 不,这根本不是问题。
-
您应该从错误中查看these search results。
标签: swift cocoa nsmenuitem