获取字符串的值类型(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()
... 方法(以及用于类型检查的 isNumber
、isBool
... 标志)。
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脚本 )