我正在运行一些由JSContext
中的用户输入并对其进行评估的代码。我希望能够得到评估结果的类型。我尝试了很多东西(见下文),但似乎没有用。有关如何做到这一点的任何建议?真的很讨厌必须解析字符串并尝试按照这种方式对其进行分类,因为我允许复杂的结构,例如array.length
将是Int
,而不是Array
,因此需要相当多的代码。
let context = JSContext()!
let ans = context.evaluateScript(value) // need type for this
if let typeCheck = ans as? String {
// always fails
}
let y = "1"
print(x is Int) // false
print(type(of: y) == type(of: 1)) // false
答案 0 :(得分:0)
Instad of js context你可以使用WKWebView评估java脚本。 像这样的东西
self.webView.evaluateJavaScript(self.scriptValue)
让我知道它是否有帮助,或者你需要问一些事情。
答案 1 :(得分:0)
JSValue具有toNumber()
,toBool()
...方法(以及用于类型检查的isNumber
,isBool
...标志)。
let value: JSValue = jsContext.evaluateScript("1 + 2")
if value.isNumber {
let number: NSNumber = value.toNumber()
number is Int // true
}