2014-11-16 1 views
0

Я не могу на всю жизнь переводить словарь (в данном случае содержащий SKLabelNode) или любой другой объект JavaScriptCore в Swift. Я взял этот короткий образец прямо из проекта шаблона «инструмент командной строки», который я только что создал в Xcode.JavaScriptCore и 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.' 

Я использую Xcode 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

Вы используете неправильный метод. Вы хотите использовать setObject:forKeyedSubscript: от JSContext и не setValuesForKeysWithDictionary: от NSKeyValueCoding протокола (который JSContext не соответствует), то есть:

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

Ого, ты жизнь заставка. Спасибо. Этот метод, должно быть, был единственным, которого я не пробовал. – Rhuantavan

 Смежные вопросы

  • Нет связанных вопросов^_^