如何将 WKScriptMessage.body 转换为结构体?

raw*_*bee 4 swift wknavigationdelegate

我设置了该WKScriptMessageHandler函数userContentController(WKUserContentController, didReceive: WKScriptMessage)来处理发送到本机应用程序的 JavaScript 消息。我提前知道消息正文总是会返回相同的字段。如何将WKScriptMessage.body, 声明为Any结构体?

小智 5

例如,安全类型转换到字典怎么样?

let body = WKScriptMessage.body
guard let dictionary = body as? [String: String] else { return }
Run Code Online (Sandbox Code Playgroud)

或者作为一个选项,您可以将正文作为 json 字符串发送并使用可编码对其进行序列化。

struct SomeStruct: Codable {
    let id: String
}

guard let bodyString = WKScriptMessage.body as? String,
      let bodyData = bodyString.data(using: .utf8) else { fatalError() }

let bodyStruct = try? JSONDecoder().decode(SomeStruct.self, from: bodyData)
Run Code Online (Sandbox Code Playgroud)