这里我提出了另一个noob问题:我试图用swift编写一个非常简单的程序,当试图使用一个变量从程序内部运行shell命令时被卡住了。
一个简单的例子:写作有效。
但以下代码不起作用:
var whatToSay = "hello world"
system("say \(whatToSay)")
生成程序时出现的错误是:
system("say hello")
有什么帮助吗?
最佳答案
您需要强制转换才能获得CString
:
var whatToSay = "hello world"
var nsCommand : NSString = "say \(whatToSay)"
var command : CString? = nsCommand.cStringUsingEncoding(NSUTF8StringEncoding)
system(command!)
编辑:
如果经常使用,可以使用扩展名来执行以下操作:
extension String {
func toCString() -> CString? {
let nsSelf : NSString = self
return nsSelf.cStringUsingEncoding(NSUTF8StringEncoding)
}
}
var whatToSay = "hello world"
system("say \(whatToSay)".toCString()!)