如何在 Swift 中将 javascript console.log 到 println() 到 Xcode 调试器?
Posted
技术标签:
【中文标题】如何在 Swift 中将 javascript console.log 到 println() 到 Xcode 调试器?【英文标题】:How can I get javascript console.log to println() to the Xcode debugger in Swift? 【发布时间】:2014-12-26 15:37:43 【问题描述】:有没有办法在 Xcode 中使用 swift 向调试器显示 javascript 错误和/或控制台日志?如果有,怎么做?
【问题讨论】:
【参考方案1】:您可以使用桌面 Safari 开发者工具。
-
运行 Xcode 模拟器。
打开桌面 Safari 开发者工具。桌面 Safari 菜单 -> 开发 -> Simulator-iPhone XXX -> 您的 Xcode Simulator 应用程序名称。然后会出现一个 Web Inspector。
当您运行 Xcode 模拟器时,所有 console.log() 消息都将打印在 Web Inspector 的“控制台”选项卡上。选择正确的过滤器,例如“全部”或“日志”。
要在桌面 Safari 菜单上显示开发项目,请转到 Safari 菜单 -> 首选项 -> 高级 -> 在菜单栏中显示桌面菜单。
【讨论】:
有帮助,谢谢。【参考方案2】:如果你已经在你的 javascript 和 swift 代码之间建立了正确的连接(例如使用这里的方法:http://www.kinderas.com/technology/2014/6/15/wkwebview-and-javascript-in-ios-8-using-swift),你可以在 JS 中编写一个方法,它会在 swift 中向指定的 scriptMessageHandler 发送消息,然后 println到 xcode 输出。
类似这样的东西(匆忙写下,可能是错别字)
JS 方法发送到 swift:
function sendConsole(message)
try
webkit.messageHandlers.myMessageHandler.postMessage("Console:" + message);
catch(err)
console.log('Something is wrong');
提取 swift 代码来处理它:
func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage)
if(message.name == "myMessageHandler")
println(message.body)
如果您不确定如何执行此操作,请点击链接,他的解释非常出色。
【讨论】:
如果我添加自己的打印功能,这听起来不错,但是如何将 js window.console.log 重定向到 webkit.messageHandlers.myMessageHandler以上是关于如何在 Swift 中将 javascript console.log 到 println() 到 Xcode 调试器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 3 中将 [UInt8] 数组复制到 C 指针?
如何在 ios 中将变量从 javascript 传递到目标 C 和目标 C 到 Javascript