次のように Objective-C に NSString がある場合、JavaScriptCore を使用します。
NSString *objcName = @"Kristof";
および jsContextRef と呼ばれる JSGlobalContextRefコンテキスト。
objcName の Objective-C 値を jsContextRef の名前付き JavaScript 変数に転送するにはどうすればよいですか? 私は次のように考えていました:
JSStringRef jsNameRef = JSStringCreateWithUTF8CString([objcName UTF8String]);
JSValueRef jsValueRef = JSValueMakeString(jsContextRef, jsNameRef);
変数名が「jsName」になるとしましょう。次のような呼び出しがさらに 2 回 (または 1 回でも) 必要です。
// This part is pseudo-code for which I would like to have proper code:
JSValueStoreInVarWithName(jsContextRef,"jsName",jsValueRef);
最終的に、Objective-C で次のように呼び出されたときに、この JavaScript が正しく評価されるようにします。
NSString *lJavaScriptScript = @"var jsUppercaseName = jsName.toUpperCase();";
JSStringRef scriptJS = JSStringCreateWithUTF8CString([lJavaScriptScript UTF8String]);
JSValueRef exception = NULL;
JSValueRef result = JSEvaluateScript(jsContextRef, scriptJS, NULL, NULL, 0, &exception);