获取字符串的值类型(JSContext evaluateScript)

时间:2018-05-18 04:23:14

标签: javascript ios swift javascriptcore

我正在运行一些由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

2 个答案:

答案 0 :(得分:0)

  

Instad of js context你可以使用WKWebView评估java脚本。   像这样的东西

self.webView.evaluateJavaScript(self.scriptValue)

  

让我知道它是否有帮助,或者你需要问一些事情。

答案 1 :(得分:0)

JSValue具有toNumber()toBool() ...方法(以及用于类型检查的isNumberisBool ...标志)。

let value: JSValue = jsContext.evaluateScript("1 + 2")

if value.isNumber {
    let number: NSNumber = value.toNumber()
    number is Int // true
}