次の内容の JavaScript ファイル があるjavascript.js
とします。
window.fruitsAndVeggies = {
name2CategoryMap: {
"apple": "fruit",
"carrot": "vegetable"
}
}
window.fruitsAndVeggies
Javascript オブジェクトの内容を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辞書にロードするために呼び出すことができる簡単な関数はありますか?
助けてくれて本当にありがとうございます。