2014-11-09 5 views
1

Как вы добавляете JS-файл в домашний каталог, чтобы 's' не возвращал 'nil'. Благодарю.iOS 8 JavaScriptCore: Где вы размещаете свои файлы JavaScript?

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 проект копирует файл, если необходимо, в пункт назначения

Смежные вопросы