iOS 8 JavaScriptCore:您将 JavaScript 文件放在哪里?

Posted

技术标签:

【中文标题】iOS 8 JavaScriptCore:您将 JavaScript 文件放在哪里?【英文标题】:iOS 8 JavaScriptCore: Where do you place your JavaScript files at? 【发布时间】:2014-11-09 23:28:33 【问题描述】:

如何将 JS 文件添加到主目录,以使 's' 不返回 'nil'。谢谢。

func analyzeText(text: String) 

    let homeDir = NSHomeDirectory()

    var err: NSError? = NSError()

    let s = String(contentsOfFile: homeDir + "/text.js", encoding: NSUTF8StringEncoding, error: &err)

    println(s)

    var context = JSContext(virtualMachine: JSVirtualMachine())

    context.evaluateScript(s)

    let analyzeText = context.objectForKeyedSubscript("analyzeText")

    let analyzeTextVal = analyzeText.callWithArguments([text])

    println(analyzeTextVal)


【问题讨论】:

【参考方案1】:

以下代码适用于我:

func analyzeText(scriptName: String) 
    var ext = scriptName.pathExtension
    var fileName = scriptName.substringToIndex(
        advance(scriptName.startIndex, 
                scriptName.utf16Count - ext.utf16Count - 1))

    if fileExtension.utf16Count == 0 
        fileName = scriptName
        ext = "js"
    

    let url = NSBundle.mainBundle()
        .URLForResource(fileName, withExtension: ext)
    let scriptCode = String(contentsOfURL: url!, 
                            encoding: NSUTF8StringEncoding, 
                            error: nil)!

    var context = JSContext(virtualMachine: JSVirtualMachine())
    context.evaluateScript(scriptCode)
    /* ... */

要评估名为 text.js 的文件,请执行以下操作:

analyzeText("text")

确保已将text.js 添加到 Xcode 项目中,如有必要,将文件复制到目标位置

【讨论】:

如果有许多javascript文件并且它们具有相互依赖关系怎么办:它们可以按依赖关系的相反顺序依次加载并期望正确解析吗?

以上是关于iOS 8 JavaScriptCore:您将 JavaScript 文件放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:8。调用引入的JavaScript - 调用

脱离 WebView 的通信 JavaScriptCore

iOS9 上的 JavaScriptCore 崩溃

iOS上的javascriptcore框架可以访问网络吗?

iOS js oc相互调用(JavaScriptCore)

JavaScriptCore - 在 iOS 中访问 DOMParser