我处理使用UIWebViews呈现内容的iOS项目.我经常需要该内容与本机应用程序进行通信,为此我依赖于有用的WebViewJavascriptBridge.
我开始了一个我希望在Swift中实现的新项目.作为语言的新手,我遇到了正确实现桥梁的问题.虽然我很乐意承认对部分问题缺乏经验,但我也意识到Xcode在某种程度上错误地完成了代码,尤其是在设置Objective-C库使用块的闭包时.
这是我在Objective-C中使用的代码,其中一些Javascript通过字典发送以呈现PDF:
@weakify(self);
self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
@strongify(self);
if ([data isKindOfClass:[NSDictionary class]]) {
// show a pdf
if ([data[@"type"] isEqualToString:@"pdf"]) {
self.docString = data[@"file"];
self.docTitle = data[@"title"];
[self performSegueWithIdentifier:@"modalPDF" sender:self];
}
}
}];
Run Code Online (Sandbox Code Playgroud)
除了正确设置网桥之外,我还需要确保在Swift中使用弱引用,self就像我在Objective-C代码中所做的那样.
如何在Swift中正确实现桥接?