В настоящее время я пытаюсь перечислить все ключи в цепочке ключей как NSMenuItems, и когда я нажимаю один, я хочу, чтобы он вызывал функцию с параметром String BUT с моим текущим кодом каждый ключ удаляется, когда я запускаю свое приложение не только нажатием клавиши.Селектор() с параметром в Swift + NSMenuItem
Это мой текущий код:
NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
let menu = NSMenu()
let internetKeychain = Keychain(server: "example.com", protocolType: .https, authenticationType: .htmlForm)
func applicationDidFinishLaunching(_ aNotification: Notification) {
for key in internetKeychain.allKeys() {
menu.addItem(NSMenuItem(title: " \(key)", action: Selector(deleteKey(key: "\(key)")), keyEquivalent: ""));
}
if let button = statusItem.button {
button.title = ""
button.target = self }
statusItem.menu = menu
NSApp.activate(ignoringOtherApps: true)
}
func deleteKey(key: String) -> String {
do {
try addInternetPasswordVC().internetKeychain.remove("\(key)")
print("key: \(key) has been removed")
} catch let error {
print("error: \(error)") }
refreshMenu()
return key
}
...
}
Я подозреваю
- Вариант 1: селекторы принимают функции с параметрами (или просто в какой-то степени)
- Вариант 2 : Я сделал небольшую ошибку в функции в первой или последней строке.