有没有办法将字符串转换为代码块?我向我的网站发出Ajax请求,该网站的端点返回一些快速代码作为字符串。我可以将该代码作为字符串返回,但我无法运行该代码,因为它不知道它是代码。
答案 0 :(得分:12)
正如其他人所指出的,如果您正在创建iOS应用程序(尤其是在应用程序商店中进行分发),则无法执行此操作。但是,如果您正在为OS X机器编写Swift代码并且您知道XCode已安装在机器上,则可以通过运行命令行Swift编译器来运行Swift代码字符串。这样的事情(当然有适当的错误检查):
var str = "let str = \"Hello\"\nprintln(\"\\(str) world\")\n"
let task = Process()
task.launchPath = "/usr/bin/swift"
let outpipe = Pipe()
let inpipe = Pipe()
inpipe.fileHandleForWriting.write(str.data(using: String.Encoding.utf8, allowLossyConversion: true)!)
task.standardInput = inpipe
task.standardOutput = outpipe
task.launch()
task.waitUntilExit()
task.standardInput = Pipe()
let data = outpipe.fileHandleForReading.readDataToEndOfFile()
let output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String
同样,在几乎所有真实案例中都不建议这样做,但如果你真的需要,可以执行一串Swift代码。
答案 1 :(得分:11)
不,你不能这样做。 Swift是一种编译语言,不像Ajax那样解释。
Swift编译器在Mac上运行,而不是在iOS设备上运行。 (Objective-C也是如此)。
另外,Apple的应用程序商店指南禁止向您的应用程序提供可执行代码,因此即使您想出办法,您的应用也会被拒绝。
请注意,随着Swift游乐场的出现,可以在iPad上运行Swift编译器。最近的高端iPhone可能还可以胜任,但你必须弄清楚如何安装它。
如上所述,Apple的应用商店指南禁止您在运行时向您的应用提供代码。