这里我提出了另一个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()!)

08-27 18:50