WKScriptMessage.body causes EXC_BAD_ACCESS
WKScriptMessage.body causes EXC_BAD_ACCESS
我正在使用Mac应用程序中的WKWebView
组件来显示网页。此网页使用JavaScript调用webkit.messageHandlers["callbackHandlerName"].postMessage(dataObject);
将数据发送到本地应用程序
我可以在本机应用程序中毫无问题地接收大多数消息(然后将其正文转换为NSDictionary
),但当我尝试访问属性message.body
时,某些类型的消息会导致EXC_BAD_ACCESS
。我不知道为什么有些数据不能发送到本机应用程序,而另一些可以(在这两种情况下,数据都是嵌套的JavaScript对象)
internal func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage)
{
switch (message.name)
{
case "nativeCallbackA":
onNativeCallbackA(message.body)
case "nativeCallbackB":
onNativeCallbackB(message.body) //throws EXC_BAD_ACCESS
default:
print("Unsupported message " + message.name);
}
}
使用JS postMessage
调用传递给本机应用程序的消息是否有任何限制?
哦!我解决了我的问题:
我的处理程序nativeCallbackB
被声明为:
func nativeCallbackB(data: Any) { //... }
但CCD_ 9的类型是CCD_
因此,我将handler的声明更改为:
func nativeCallbackB(data: AnyObject) { //... }
现在它可以工作了(但我仍然不知道为什么有些消息的处理程序声明不正确,以及为什么编译前Xcode没有检查这些问题)
相关文章:
- 如何解决Access Control Allow Origin错误
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 使用JavaScript插入Access数据库
- AWSELB Cookie access from Javascript
- XMLHttpRequest : 不被 access-control-allow-origin 所允许
- HTML将数据保存在Access中
- 使用 node.js 设置 Microsoft Access 数据库连接
- 来自 MS Access 的 JavaScript 陷阱为空
- Bad Errors for PropType (React)
- 可以在Access Control Allow Origin中指定端口
- Access Control Allow Origin阻止我访问google api,尽管使用了dataType:
- JSONP跨原点错误'不存在Access Control Allow Origin标头'
- 角度:原点http://localhost在Access Control Allow Origin标头中找不到
- Angular$resource调用不被Access Control Allow使用Safari接受,而被Chrome接
- Instagram API access_token request and Access-Control-Allow-
- 方法不允许 — 从 Angularjs 中的请求标头中删除 Access-Control-Request-Method
- 下载文件:ACCESS DENIED
- Yahoo - OAuth2 - SocialAPI:在初始响应中不返回“Access-Control-Allow-Or
- Node, BodyParser bad json
- 在 Safari 上使用通用分析的 Access-Control-Allow-Origin 不允许