无法使用JavaScriptCore中的Swift类
发布时间:2020-12-14 19:08:43 所属栏目:百科 来源:网络整理
导读:我想在 JavaScriptCore上下文中实例化一个Swift类. 我尝试了与Playground不同的语法,也尝试过Xcode 6.4(Swift 1.2)和Xcode 7 beta 3(Swift 2.0),但没有成功= – ( 也许我错过了什么. 在我在网上找到的更复杂的例子中,协议’create’函数被定义为’class func
我想在
JavaScriptCore上下文中实例化一个Swift类.
我尝试了与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 play import Foundation import JavaScriptCore let context = JSContext() // errors handling context.exceptionHandler = { context,exception in println("JS Error: (exception)") } @objc protocol 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')") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |