我尝试了与Playground不同的语法,也尝试过Xcode 6.4(Swift 1.2)和Xcode 7 beta 3(Swift 2.0),但没有成功= – (
也许我错过了什么.
在我在网上找到的更复杂的例子中,协议’create’函数被定义为’class func’但编译器拒绝这种语法告诉“类方法只允许在类中;使用’static’来声明静态方法“… 所以我做了.
这是我的代码(OS X 10.10.4 – Xcode 6.4).我用了一个游乐场:
//: Playground - noun: a place where people can playimport Foundationimport JavaScriptCorelet context = jscontext()// errors handlingcontext.exceptionHandler = { context,exception in println("Js Error: \(exception)")}@objcprotocol PersonJavaScritMethod : JsExport { func sayHello() static func create(name : String) -> Person}class Person : NSObject,PersonJavaScritMethod { var name : String! init(name:String) { super.init() println("# init done #") self.name = name } class func create(name : String) -> Person { return Person(name: name) } func sayHello() { println("Hello \(name)") }}let aPerson = Person.create("Toto")// -> ok : console output : "# init done #"aPerson.sayHello()// -> ok : console output : "Hello Toto"context.globalObject.setobject(Person.self,forKeyedSubscript: "Person")context.evaluateScript("Person.create('Mike')")// -> not ok : console output :// "Js Error: TypeError: undefined is not a function (evaluating 'Person.create('Mike')')"解决方法 这适用于XCode 8.2.1和swift3(我打赌这与Swift 3中的新方法名称/标签管理有关):
context.evaluateScript("Person.createWithname('Mike')")总结
以上是内存溢出为你收集整理的无法使用JavaScriptCore中的Swift类全部内容,希望文章能够帮你解决无法使用JavaScriptCore中的Swift类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)