Я не могу на всю жизнь переводить словарь (в данном случае содержащий 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()])
Ого, ты жизнь заставка. Спасибо. Этот метод, должно быть, был единственным, которого я не пробовал. – Rhuantavan