是否可以从Javascript调用Swift函数/回调? 在Android中可以使用JavaVoidCallbacks,Swift中有类似的东西吗?现在我使用JavaScriptCore,我可以从Swift调用javascript函数。
答案 0 :(得分:2)
是的,你可以。
请参阅本教程:https://www.raywenderlich.com/124075/javascriptcore-tutorial
您对“公开本地代码”
段感兴趣在obj-c中非常简单。您只需将jsContext用作普通字典即可。
context[@"functionName"] = ^ <#returnType#> (<#parameters#>) {
<#Your code#>
}
希望它有所帮助。
答案 1 :(得分:0)
在Swift中,我发现的最简单的方法是使用Javascript创建网关对象,例如valuateScript(),然后向该对象添加函数:
// x is JSContext
let gateway = x.objectForKeyedSubscript("gateway" as NSString)
let p: @convention(block) (Int, Double) -> () = { h, ms in
return self.swift_method(h, ms)
}
gateway!.setObject(p, forKeyedSubscript: "swift_method" as NSString)
之后,您可以使用Javascript调用gateway.swift_method()。
大多数类型转换都是自动的。我在Lambda中使用了类型Int,Double,String和[Int]作为参数和/或返回类型。