小编Ruc*_*ore的帖子

使用 Javascript 处理 HTML 和 Swift 之间的交互

WKWebView 无法在加载的网页中触发 javascript。

场景:如果用户单击网站中的图像,它应该得到更新。

如果用户单击图像,则使用 javascript 更新网站上的图像。

  1. 项目中包含 .js 文件
  2. 配置WKWebview
  3. 启用 JavaScript
  4. 在WKWebview中添加脚本

JS 文件中的函数如下:

function captureImage(bucket,fileName){
    window.webkit.messageHandlers.captureImage.postMessage("showCamera")
}
Run Code Online (Sandbox Code Playgroud)

在 Swift 中访问此函数如下:

      webViewPWA.configuration.userContentController.add(self, name: "captureImage")


///This function handles the event generated by javascript
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
         print("Webview Message received: \(message.name) with body: \(message.body)")
        if (message.name == "captureImage"){
            print("\(message.body)")

            let body = message.body
            if let action:String = body as? String {
                switch action {
                case "showCamera":
                    print("camera image triggering, capture image for JS")
                    //take necessary …
Run Code Online (Sandbox Code Playgroud)

html javascript ios swift progressive-web-apps

5
推荐指数
1
解决办法
1069
查看次数

iOS 错误“JSON 写入中的类型无效 (FIRTimestamp)”

我正在尝试将我的数据映射到模型。我在其中使用 Firestore 快照侦听器来获取数据。在这里,我正在获取数据并映射到“用户”模型

            do{
                let user = try User(dictionary: tempUserDic)
                print("\(user.firstName)")
            }
            catch{
                print("error occurred")
            }
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

struct User {
    let firstName: String
//    var lon: Double = 0.0
//    var refresh:Int = 0
//    var createdOn: Timestamp = Timestamp()
}

//Testing Codable
extension User: Codable {
    init(dictionary: [String: Any]) throws {
        self = try JSONDecoder().decode(User.self, from: JSONSerialization.data(withJSONObject: dictionary))
    }
    private enum CodingKeys: String, CodingKey {
        case firstName = "firstName"
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我错了请纠正我。

崩溃是因为我在数据中获取“时间戳”。

从监听器获取的数据:

用户词典: …

ios firebase swift4 codable

5
推荐指数
1
解决办法
1811
查看次数