0
JavaScriptCore로 전달 된 객체를 변경하는 중에 문제가 있습니다. 여기 JavaScriptCore로 JSContext 전달 Swift 객체 변경하기
이 testProperty라는 단일 문자열 속성 정의 내 사용자 지정 개체입니다 : 여기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가 변경되지 않아야합니까?
Btw, OS X 10.10.1의 XCode 6.1.1에서 컴파일 된 OS X 앱입니다.
당신이 린타로 감사 작동,이 문제는 해결! – Rhuantavan
Help. 최신 xcode 7.2 놀이터에서 더 이상 제대로 작동하지 않습니다. ("XYZ"대신 "ABC"가 인쇄됩니다. – Prcela
놀이터 버그로 보입니다. 클래스 및 프로토콜이 공개로 표시된 경우에만 샘플이 놀이터에서 잘 작동합니다. 놀이터 소스 폴더에서 별도의 파일로 이동했습니다. – Prcela