我有一个类,其方法和属性使用JSExport导出.在正常情况下,它运作良好.但是如果属性是某个内部类的类型,则无法从
javascript访问它.
以下是我正在使用的课程:
Person.swift
import Foundation import JavaScriptCore @objc protocol PersonJavaScritMethod : JSExport { var testProperty : OuterClassPersonal.Personal? { get set } func sayHello(name1:String) } class Person : NSObject,PersonJavaScritMethod { var name : String! var testProperty:OuterClassPersonal.Personal? init(name:String) { testProperty = OuterClassPersonal.Personal() super.init() self.name = name } class func create(name : String) -> Person { return Person(name: name) } func sayHello(name1:String) { println("Hello \(name) \(name1)") } }
Personal.swift
import Foundation import JavaScriptCore @objc protocol PersonalJavaScritMethod : JSExport { func getNNN() } class OuterClassPersonal:NSObject,JSExport{ class Personal:NSObject,PersonalJavaScritMethod { func getNNN(){ println("Hip Hip Hurray") } } }
JavaScript.swift
import Foundation import JavaScriptCore class Javascript { let context = JSContext() func evaluateScript() { context.exceptionHandler = { context,exception in println("❌ Error in Javascript: \(exception) "); } var p1:Person = Person(name: "Luitel") context.globalObject.setObject(p1,forKeyedSubscript: "Person1") context.evaluateScript("Person1.sayHello('sdf') \n ") var result = context.evaluateScript("Person1.testProperty.getNNN() \n") println("\(result.toString())") } }
当我运行evaluateScript()方法时,我在控制台中获得如下输出,
Hello Luitel sdf ❌ Error in Javascript: TypeError: undefined is not a
function (evaluating ‘Person1.testProperty.getNNN()’)
undefined
我想访问个人类的方法getNNN().这里,如果getNNN()是OuterClassPersonal类的方法,而OuterClassPersonal实现PersonalJavaScriptMethod,则它可以正常工作.
问题是,如何从Javascript访问内部类“Personal”的方法?
解决方法
似乎没有办法将内部类函数导出到javascript.我将内部类(Personal)移出并创建了独立的类,它起作用了.