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

Posted

技术标签:

【中文标题】获取字符串的值类型(JSContext evaluateScript)【英文标题】:Getting value type of string (JSContext evaluateScript) 【发布时间】:2018-05-18 04:23:14 【问题描述】:

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

【问题讨论】:

【参考方案1】:

在 js 上下文中,您可以使用 WKWebView 评估 java 脚本。 像这样的

self.webView.evaluatejavascript(self.scriptValue)

如果有帮助或者你需要问什么,请告诉我。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于获取字符串的值类型(JSContext evaluateScript)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jython Evaluator 中获取 StreamSets 记录字段类型

android.animation - ValueAnimator-ofObject(TypeEvaluator evaluator, Object... values)

swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:16。 JSContext相关演示,在委托:webViewDidFinishLoad()中获取上下文

jsContext全局函数调用与对象函数调用evaluateScript

GroovyMOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 动态拦截函数 | 动态获取 MetaClass 中的方法 | evaluate 方法执行Groovy脚本 )

[LeetCode] 399. Evaluate Division 求除法表达式的值