带有Swift变量的system()命令

Iac*_*ari 4 objective-c swift xcode6

在这里,我遇到了另一个noob问题:我试图在Swift中编写一个非常简单的程序,并且在尝试使用变量从程序中运行shell命令时遇到困难.

一个简单的例子:写作system("say hello").

但是以下代码不起作用:

var whatToSay = "hello world"
system("say \(whatToSay)")
Run Code Online (Sandbox Code Playgroud)

我在构建程序时遇到的错误是: Could not find member 'convertFromStringInterpolatingSegment'

有帮助吗?

Zap*_*hod 5

你需要施展才能获得CString:

var whatToSay = "hello world"
var nsCommand : NSString = "say \(whatToSay)"
var command : CString? = nsCommand.cStringUsingEncoding(NSUTF8StringEncoding)
system(command!)
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您经常使用它,可以使用以下扩展名String:

extension String {
    func toCString() -> CString? {
        let nsSelf : NSString = self
        return nsSelf.cStringUsingEncoding(NSUTF8StringEncoding)
    }
}

var whatToSay = "hello world"
system("say \(whatToSay)".toCString()!)
Run Code Online (Sandbox Code Playgroud)