【发布时间】:2014-11-20 08:20:48
【问题描述】:
我在更改传递给 JavaScriptCore 的对象时遇到问题。
这是我的自定义对象,定义了一个名为 testProperty 的 String 属性:
import Foundation
import JavaScriptCore
protocol JSCustomObjectExport: JSExport {
var testProperty: String { get set }
}
class JSCustomObject: NSObject, JSCustomObjectExport {
var testProperty: String = "ABC"
}
这是我创建 JSContext 的 AppDelegate,将我的自定义对象传递给它并运行 JS 脚本以将其 testProperty 从“ABC”更改为“XYZ”。但是 testProperty 永远不会改变。
import Cocoa
import JavaScriptCore
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var window: NSWindow!
lazy var context = JSContext()
func applicationDidFinishLaunching(aNotification: NSNotification?) {
println("Started")
var co = JSCustomObject()
context.globalObject.setValue(co, forProperty: "customObject")
context.evaluateScript("customObject.testProperty = 'XYZ'")
println(co.testProperty) // ERROR(?): This prints "ABC" instead of "XYZ"
}
}
我做错了吗? co.testProperty 不应该改变吗?
顺便说一句,这是一个 OS X 应用程序,在 OSX 10.10.1 上使用 XCode 6.1.1 编译。
【问题讨论】:
标签: macos swift osx-yosemite javascriptcore