Ios JavaScriptCore没有';除了',我什么也不干;你好,世界';
我目前正在用Swift编写一个与比特币相关的应用程序。由于没有适用于BIP32/39的本机库,我决定使用JavaScriptCore使用js库 问题是,在Swift中,几乎所有内容都输出Ios JavaScriptCore没有';除了',我什么也不干;你好,世界';,ios,swift,cocoa-touch,javascriptcore,Ios,Swift,Cocoa Touch,Javascriptcore,我目前正在用Swift编写一个与比特币相关的应用程序。由于没有适用于BIP32/39的本机库,我决定使用JavaScriptCore使用js库 问题是,在Swift中,几乎所有内容都输出未定义的,例如: var pip_buffer = new Uint8Array(strength / 8); 这一个有效: var pip_buffer = "Hello, world" 这是我的Swift代码: var context: JSContext? private func initJS()
未定义的,例如:
var pip_buffer = new Uint8Array(strength / 8);
这一个有效:
var pip_buffer = "Hello, world"
这是我的Swift代码:
var context: JSContext?
private func initJS() {
context = JSContext()
if let jsSrcPath = Bundle.main.path(forResource: "script", ofType: "js") {
do {
let jsSrcContents = try String(contentsOfFile: jsSrcPath)
_ = context?.evaluateScript(jsSrcContents)
} catch let error {
print(error.localizedDescription)
}
}
}
private func getJSVar(name: String) {
if let vb = context?.objectForKeyedSubscript(name) {
print("\(vb)")
}
}
override func viewDidLoad() {
super.viewDidLoad()
initJS()
getJSVar(name: "pip_buffer")
}
如何使它工作?看看,我没有看到任何对Uint8Array
的引用,这可能意味着JavaScriptCore无法将Uint8Array
转换为“Swift”值
您可以在JS端使用Array.from(pip\u buffer)
将Uint8Array
转换为常规数字数组,这很有效
e、 g
转换常规JS数字数组后,还可以使用JSValue.toArray()
(Swift端)将其作为数组获取(也可以对数组中的每个项目使用toNumber()
、toInt32()
或toUInt32()
)
if let vb = context?.evaluateScript("Array.from(pip_buffer)") {
print("\(vb)")
}