使用 JavaScriptCore,如果我在 Objective-C 中有这样的 NSString:
NSString *objcName = @"Kristof";
和一个名为jsContextRef的 JSGlobalContextRef 上下文。
如何将 objcName 的 Objective-C 值转移到 jsContextRef 中的命名 JavaScript 变量中?我的思路是:
JSStringRef jsNameRef = JSStringCreateWithUTF8CString([objcName UTF8String]);
JSValueRef jsValueRef = JSValueMakeString(jsContextRef, jsNameRef);
假设变量名是“jsName”。我需要再打几个电话(甚至可能打一个电话),例如:
// This part is pseudo-code for which I would like to have proper code:
JSValueStoreInVarWithName(jsContextRef,"jsName",jsValueRef);
这样最终这个 JavaScript 在 Objective-C 中这样调用时会正确评估:
NSString *lJavaScriptScript = @"var jsUppercaseName = jsName.toUpperCase();";
JSStringRef scriptJS = JSStringCreateWithUTF8CString([lJavaScriptScript UTF8String]);
JSValueRef exception = NULL;
JSValueRef result = JSEvaluateScript(jsContextRef, scriptJS, NULL, NULL, 0, &exception);