为什么swift脚本不显示通知?

为什么swift脚本不显示通知?,swift,nsnotificationcenter,Swift,Nsnotificationcenter,这是我的swift脚本,它运行时没有错误,但是什么也不做。我希望它在通知中心显示通知 #!/usr/bin/env swift import Foundation let notification = NSUserNotification() notification.title = "Hello" let notificationCenter = NSUserNotificationCenter.defaultUserNotificationCenter() class MyNotif

这是我的swift脚本,它运行时没有错误,但是什么也不做。我希望它在通知中心显示通知

#!/usr/bin/env swift

import Foundation

let notification = NSUserNotification()
notification.title = "Hello"

let notificationCenter = NSUserNotificationCenter.defaultUserNotificationCenter()

class MyNotificationDelegate: NSObject, NSUserNotificationCenterDelegate
{
    func userNotificationCenter(center: NSUserNotificationCenter,
        shouldPresentNotification notification: NSUserNotification) -> Bool {
            return true
    }
}

notificationCenter.delegate = MyNotificationDelegate()
notificationCenter.deliverNotification(notification)

有人能解释一下为什么这个代码段在操场上按预期运行(显示一个通知),但在作为脚本从终端执行时什么也不做。

“当作为脚本从终端执行时”,因为脚本结束了,在通知有机会传递到任何东西之前,所有东西都被拆掉了。这是不可能的“让它保持活动状态”-它只是暂停,打断了所有事情的进度(它会阻塞)。请在此处比较我的答案:嗯,这意味着添加
nsrunlop.currentRunLoop().run()
应该有帮助,不是吗?不幸的是,这也没有帮助。您在设置代理之前调用deliver notification吗?好的一点,在设置代理之后调用
deliver notification是有意义的。但是,脚本仍然不显示通知(编辑了示例脚本)当从终端作为脚本执行时,“因为脚本结束,在通知有机会传递到任何对象之前,所有内容都已被删除。这不会“保持它的活动状态”-它只是暂停,中断所有内容的进度(它会阻塞)。比较我的回答:嗯,这意味着添加
nsrunlop.currentRunLoop().run()
应该有帮助,不是吗?不幸的是,这也没有帮助。您是否在设置委托之前调用传递通知?很好,在设置委托之后调用
deliverNotification
。但是,脚本仍然不显示通知(编辑了示例脚本)