gpt4 book ai didi

swift - 扩展类中的字段为空

转载 作者:行者123 更新时间:2023-11-28 10:33:10 24 4
gpt4 key购买 nike

我创建了一个 WKWebView 来使用我的应用程序,我需要 Swift 与 Javascript 对话,除此之外一切正常!

import UIKit
import WebKit

class FirstViewController: UIViewController {

var wk: WKWebView!

override func viewDidLoad() {
super.viewDidLoad()
let config = WKWebViewConfiguration()
let user = WKUserContentController()

user.add(self, name: "jsHandler")
config.userContentController = user

let wk = WKWebView(frame: .zero, configuration: config)
view.addSubview(wk)
}
}

extension FirstViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "jsHandler" {
// HERE HAPPENS THE ERROR
self.wk.evaluateJavaScript("chamaLista( '\(value!)' );", completionHandler: { (Any, Error) in })
}
}
}

这个错误: enter image description here

我在 didReceive 函数中添加下一段代码:

extension FirstViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "jsHandler" {
if self.wk == nil {
print("WK is Null!")
}
}
}
}

并且: enter image description here

不能引用扩展类中的对象???

最佳答案

您永远不会在 viewDidLoad 中将 webview 分配给 wk:

override func viewDidLoad() {
...

let wk = WKWebView(frame: .zero, configuration: config)
// assign the local variable to instance property
self.wk = wk
view.addSubview(wk)
}

或者只是:

override func viewDidLoad() {
...

// assign directly to instance property, don't use local variable
wk = WKWebView(frame: .zero, configuration: config)
view.addSubview(wk)
}

关于swift - 扩展类中的字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55031052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com