簡體   English   中英

無法從 WKUserContentController didReceive WKScriptMessage 獲取字符串數據

[英]Can't get string data from WKUserContentController didReceive WKScriptMessage

我的方法稱為:

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    print("message.body: \(message.body)")
    
    if let messageBody = message.body as? [String: Any] {
        print("messageBody: \(messageBody)") //this is not triggered
        if let data = messageBody["data"] as? NSString {
            print("DATA: \(data)")
        }
    }

消息正文是:

message.body: {"type":3,"data":"{\"title\":\"Verzamelen\",\"content\":\"Loongegevens...\"}"}

但在那之后我無法檢索“數據”字段。 我錯過了什么?

該問題可能與字符串中的反斜杠轉義有關。 有效的是使用 JSON 解碼器對其進行解碼:

struct ScriptMessage: Codable {
    let type: Int
    let data: String
}


func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    
    guard let bodyString = message.body as? String,
          let bodyData = bodyString.data(using: .utf8) else {
        return
    }
    
    if let bodyStruct = try? JSONDecoder().decode(ScriptMessage.self, from: bodyData) {
        print(bodyStruct.data)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM