无法使用JavaScriptCore中的Swift类

无法使用JavaScriptCore中的Swift类,第1张

概述我想在 JavaScriptCore上下文中实例化一个Swift类. 我尝试了与Playground不同的语法,也尝试过Xcode 6.4(Swift 1.2)和Xcode 7 beta 3(Swift 2.0),但没有成功= – ( 也许我错过了什么. 在我在网上找到的更复杂的例子中,协议’create’函数被定义为’class func’但编译器拒绝这种语法告诉“类方法只允许在类中;使用’st 我想在 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 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类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1042233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存