2014-11-16 1 views
0

스위프트의 Dictionary (이 경우에는 SKLabelNode 포함) 또는 다른 객체를 JavaScriptCore에 전달할 수 없습니다. Xcode에서 방금 만든 "명령 줄 도구"템플릿 프로젝트에서이 간단한 샘플을 직접 가져 왔습니다. 이것은 나에게 예외를 throwJavaScriptCore and Swift "이 클래스는 키 테스트를위한 키 값 코딩을 지원하지 않습니다."

import Foundation 
import JavaScriptCore 
import SpriteKit 

let context = JSContext() 
let label = SKLabelNode(text:"Test") 
context.setValuesForKeysWithDictionary(["test": label]) 

:

2014-11-16 18:07:47.104 JSCoreTest[10139:193484] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<JSContext 0x1008268d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key test.' 

나는 요세미티에서 엑스 코드 6.1을 사용하고 있습니다. 누구든지 내 문제를 재현하고 해결할 수 있습니까?

UPDATE :

내가하지 "JSExport"객체를했기 때문에 아마도 그것은 작동하지 않았다 생각, 그래서이 예제를 시도,하지만 난 여전히 같은 오류 얻을 :

protocol MyObjExport: JSExport { 
    var foo: String! { get } 
} 

class MyObj: NSObject, MyObjExport { 
    var foo: String! { return "bar" } 
} 


let context = JSContext(virtualMachine: JSVirtualMachine()) 
context.setValuesForKeysWithDictionary(["test": MyObj()]) 

답변

0

잘못된 방법을 사용하고 있습니다.

let context = JSContext() 
let label = SKLabelNode(text:"Test") 
context.setObject(label, forKeyedSubscript: "test") 
+0

와우, 당신은 생명의 은인 위치 : 즉 (JSContext가 일치하지 않음) NSKeyValueCoding 프로토콜에서 JSContext에서 setObject:forKeyedSubscript:하지 setValuesForKeysWithDictionary:을 사용하고 싶습니다. 고맙습니다. 그 방법은 제가 시도하지 않은 유일한 방법이었을 것입니다. – Rhuantavan