0
現在、キーチェーン内のすべてのキーをNSMenuItemsとして表示しようとしています。クリックすると、文字列パラメータを持つ関数を呼び出せます。 私はキーをクリックするだけでなく、私のアプリを実行すると、キーが削除されます。Swift + NSMenuItemのパラメータを持つセレクタ()
これは私の現在のコードです:
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
}
...
}
私は
を疑うNSApplicationMain
- オプション1:セレクタは(または単にある程度で)パラメータを持つ関数
- オプション2を受け入れます:最初の行または最後の行の関数を少し間違えました。