Ошибка компоновщика Xcode для WKWebViewJavascriptBridge
Я использую WebViewJavascriptBridge для взаимодействия между JS и собственным кодом. Я нахожу UIWebView иногда медленным, поэтому я попытался переключиться на WKWebView.
Проект был в порядке при использовании UIWebView.
var bridge:WebViewJavascriptBridge!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.webView = UIWebView(frame: self.viewport.frame)
self.view.addSubview(webView!)
let url = NSBundle.mainBundle().URLForResource("index", withExtension: "html", subdirectory: "www")
webView!.loadRequest(NSURLRequest(URL: url!))
webView!.scrollView.bounces = false
self.bridge = WebViewJavascriptBridge(forWebView: webView, handler: { (data, callback) -> Void in
callback("msg from bridge")
})
}
Рабочий список компиляторов:
Но когда я перешел на WKWebViewJavascriptBridge, он разваливается при связывании:
var bridge:WKWebViewJavascriptBridge!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.webView = WKWebView(frame: self.viewport.frame)
self.view.addSubview(webView!)
let url = NSBundle.mainBundle().URLForResource("index", withExtension: "html", subdirectory: "www")
webView!.loadRequest(NSURLRequest(URL: url!))
webView!.scrollView.bounces = false
self.bridge = WKWebViewJavascriptBridge(forWebView: webView, handler: { (data, callback) -> Void in
callback("msg from bridge")
})
}
Сообщение об ошибке:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_WKWebViewJavascriptBridge", referenced from:
type metadata accessor for __ObjC.WKWebViewJavascriptBridge in ViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
И кажется, что эти.m файлы не компилируются перед компоновкой.
Пожалуйста, советуйте.
1 ответ
Решение
Фу, наконец-то все заработало, отредактировав заголовок моста.
В файле WKWebViewJavascriptBridge.h
найдите эти строки:
#if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_9 || __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1)
#define supportsWKWebKit
#endif
Затем удалите #if #endif
пара, просто оставьте #define supportsWKWebKit
выдохся Но убедитесь, что вы используете iphone 7.1 или выше, иначе он не будет поддерживать WKWebkit.