ios7 + swift:带有内联Swift代码的Javascript字符串

时间:2014-11-30 12:49:44

标签: ios swift uiwebview javascriptcore

我正在寻找"内联"从Javascript字符串运行本机Swift代码的方法。目前,我的工作如下:
我从Web视图中提取了JSContext,因此我可以直接访问我的javascript环境:

var jsContext = myWebView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as JSContext

一旦我有了上下文,我就在其中设置一个新对象来调用我的代码块:

var codeClosure: @objc_block ()->() = { ()->() in println("this is my swift code closure") }
var casted: AnyObject = unsafeBitCast(codeClosure, AnyObject.self) as AnyObject
jsContext.setObject(casted, forKeyedSubscript: "callMySwiftClosure")

这让我可以调用我的代码,因为它是一个常规的javascript函数:

myWebView.stringByEvaluatingJavaScriptFromString("callMySwiftClosure()")

这非常简单,效果很好
现在,我想弄清楚我怎样才能注射" swift闭包直接转换为javascript字符串,而不在JSContext中显式创建新对象。意思是,我希望能够做到这样的事情:

myWebView.stringByEvaluatingJavaScriptFromString("\(codeClosure)")

关于如何做到这一点的任何想法?

0 个答案:

没有答案