如何在SwiftUI的ContentView中将JS或任意函数的返回值显示到iPhone屏幕
代码调整方案
你原有代码存在几个语法和逻辑错误,调整后可直接运行实现需求,完整可运行代码如下:
// ContentView.swift // Shared import Foundation import SwiftUI import JavaScriptCore // 类名遵循Swift规范大写,修正未初始化属性问题 class JSRunner { func doJS(text: String) -> String { let jsSource = "var testFunct = function(message) { return \"Test Message: \" + message;}" guard let context = JSContext() else { return "JS上下文初始化失败" } context.evaluateScript(jsSource) guard let testFunction = context.objectForKeyedSubscript("testFunct"), let result = testFunction.call(withArguments: [text]).toString() else { return "JS函数调用失败" } return result } } struct ContentView: View { // 初始化JS运行器,提前调用方法获取展示文本 private let jsRunner = JSRunner() private let showText: String init() { showText = jsRunner.doJS(text: "Hello world") } var body: some View { Text(showText) .font(.body) .fontWeight(.black) .foregroundColor(Color.red) .padding() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
主要调整点
- 修复了类属性未初始化的报错,移除了无用的
result存储属性 - 删除了不存在的
lol()调用,在ContentView的初始化方法中执行JS函数获取结果 - 替换了强制解包的写法,增加异常分支的返回值,避免运行时崩溃
- 调整命名符合Swift官方编码规范,提升可读性
运行后屏幕会显示红色的Test Message: Hello world文本,符合预期效果。
内容的提问来源于stack exchange,提问作者Konstantin Petrov
相关产品推荐
相关产品推荐

