Как получить значения из settings.bundle в TVML?

В моем приложении tvOS я создал набор настроек, но не знаю, как получить значения в TVML. Я знаю, как это сделать в Obj-c или Swift.

var standardUserDefaults = NSUserDefaults.standardUserDefaults()
var us: AnyObject? = standardUserDefaults.objectForKey("your_preference")
if us==nil {
    self.registerDefaultsFromSettingsBundle();
}

Любые идеи о способе TVML? Любая помощь высоко ценится.


person Eugene Gordin    schedule 13.02.2016    source источник


Ответы (1)


Мне неизвестен метод прямого доступа к TVJS... но вы можете легко настроить Swift/Obj-C-"прокси". Что-то в этом духе:

AppDelegate.swift

func appController(appController: TVApplicationController, evaluateAppJavaScriptInContext jsContext: JSContext) {
    let jsInterface: cJsInterface = cJsInterface();
    jsContext.setObject(jsInterface, forKeyedSubscript: "swiftInterface")
}

JsInterface.swift

@objc protocol jsInterfaceProtocol : JSExport {
    func getSetting(setting: String) -> String
}
class cJsInterface: NSObject, jsInterfaceProtocol {
    func getSetting(setting: String) -> String {
        return "<yourSetting>"
    }
}

на стороне JS...

swiftInterface.getSetting(...)
person Baa    schedule 14.02.2016