Допустим, у меня есть файл javascript javascript.js
со следующим содержимым.
window.fruitsAndVeggies = {
name2CategoryMap: {
"apple": "fruit",
"carrot": "vegetable"
}
}
Может ли кто-нибудь сказать мне самый простой способ получить содержимое объекта Javascript window.fruitsAndVeggies
в NSDictionary?
Из различных источников в Интернете я собрал воедино следующий фрагмент, который создает контекст Javascript, а затем оценивает код javascript в этом контексте.
JSGlobalContextRef ctx = JSGlobalContextCreate(NULL); // create context
JSValueRef exception = JSValueMakeUndefined(ctx); // create object to hold exceptions
// Make a "window" object in the JS Context
JSStringRef makeWindowScript = JSStringCreateWithUTF8CString("var window = {}");
JSValueRef result = JSEvaluateScript( ctx, makeWindowScript, NULL, NULL, 0, &exception );
// load the javascript file into an NSString
NSBundle * bundle = [NSBundle bundleWithIdentifier:@"my.bundle"];
NSString *filePath = [bundle pathForResource:@"javascript" ofType:@"js"];
NSError *error;
NSString *stringFromFile = [[NSString alloc]
initWithContentsOfFile:filePath
encoding:NSUTF8StringEncoding
error:&error];
// convert NSString to a JSStringRef
CFStringRef cfString = (__bridge CFStringRef)stringFromFile;
JSStringRef jsString = JSStringCreateWithCFString(cfString);
// evaluate the javascript
JSEvaluateScript( ctx, jsString, NULL, NULL, 0, &exception );
Я в замешательстве, что делать дальше. Мне нужно использовать содержимое fruitsAndVeggies.name2CategoryMap
в моем коде Objective-C. Как проще всего получить к ним доступ? Есть ли простая функция, которую я могу вызвать, чтобы загрузить их в словарь Objective-C?
Большое спасибо за вашу помощь.