我在iOS上做了一些Swift和相当数量的Objective-C,但基本上没有真正的OS X编程,所以我没有使用valueOf
。我试图在Swift论坛上帮助某人,而且......它没有用。我不确定为什么。
在游乐场,Swift REPL甚至脚本(NSSound
)中,我可以成功实例化NSSound:
#!/usr/bin/env swift
在REPL / Playground或从脚本打印,我可以看到可选内部有一个NSSound。但是当我打电话给NSSound(named:"Hero")
时,我什么都没听到:
play()
为什么?
这是一段非常小的代码,看起来很简单,但显然我错过了一些东西。这不是什么大不了的事,因为它不是我需要的代码,但是它让我烦恼,因为它看起来很简单而且它不起作用。
答案 0 :(得分:2)
NSSound异步播放声音。默认情况下,操场在执行其代码后立即退出,因此该过程在声音有机会播放之前终止。
这是一种快速而肮脏的方式,可以让游乐场无限期地活着,这样你就可以听到声音的发挥。
import Cocoa
import XCPlayground
if let sound = NSSound(named:"Hero") {
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
sound.play()
}
答案 1 :(得分:1)
似乎NSSound是一个可可类,在我测试的任何环境中都无法正常工作:
如果我在骨架OS X应用程序中放入相同的一小段代码,那么工作正常。
感谢@Leo推动我实际尝试。我考虑过这种可能性,但在他建议之前没有尝试过。