0
我正在嘗試列出鑰匙串中的所有密鑰作爲NSMenuItems,當我單擊一個時,我希望它使用String參數調用一個函數,但每次使用當前代碼調用 當我運行我的應用程序時,鍵不僅會被點擊,而且會被移除。在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 :我在第一行或最後一行的函數中犯了一個小錯誤。