Ошибка компоновщика 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.

Другие вопросы по тегам