Я использую компонент WKWebView
в своем приложении Mac для показа веб-страницы. Эта веб-страница отправить данные в родное приложение с помощью JavaScript позвонить webkit.messageHandlers["callbackHandlerName"].postMessage(dataObject);
WKScriptMessage.body вызывает EXC_BAD_ACCESS
я могу получить большинство сообщений в моем родном приложении без проблем (а затем преобразовать их тела NSDictionary
), но некоторые типы сообщений вызывает EXC_BAD_ACCESS
, когда я пытаюсь для доступа к собственности message.body
. Я не могу понять, почему некоторые данные не могут быть отправлены в родное приложение и другие могут (в обоих случаях данные вложенные объекты 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
позвонить?
может быть, что некоторые из ваших сообщений не имеют «тела» 'возможно? Не могли бы вы проверить, было ли «тело» нулевым, прежде чем пытаться что-то с этим сделать? – pbodsk
Я не могу проверить это, потому что «Значение типа« AnyObject »никогда не может быть nil». Кроме того, у моего nativeCallbackB есть пустое тело –