无法使用swift在safari浏览器localstorage中存储值

问题描述 投票:0回答:1

我正在使用WebKit将电子邮件存储在safari浏览器本地存储中。但是,我收到了错误

线程3:致命错误:在展开Optional值时意外发现nil

在localstorage中存储值的一种方法是使用UserDefaults,但这样的值不存储在safari本地存储中,因此我使用以下方式

import SafariServices
import WebKit

class SafariExtensionViewController: SFSafariExtensionViewController {
    @IBOutlet weak var webView: WKWebView!
    static let shared = SafariExtensionViewController()
    override func viewDidLoad() {
        self.preferredContentSize = NSSize(width: 300, height: 250)
        message.stringValue = ""
        emailMessage.stringValue = ""
        passwordMessage.stringValue = ""
    }
    @IBAction func userLogin(_ sender: Any) {
     let providedEmailAddress = email.stringValue
      self.webView.evaluateJavaScript("localStorage.setItem(\"email\", \"value\")") { (result, error) in

         self.webView.reload()                           
     }
    }
}

我的问题是,我如何从swift中存储safari浏览器localstorage中的值,所以我也可以从javascript访问它。

swift safari wkwebview
1个回答
1
投票

您没有从故事板连接webView插座(标记为Implicitly Unwrapped Optional),因此您收到此错误。

你可以使用CoreDataUserDefaultsFileManager,甚至简单的SQLite来存储你想要的东西。

编辑:

A Safari app extension可以阅读和修改您的网页内容。它还允许您访问浏览器中的数据。

完成以下步骤以制作Safari App Extension:

  1. Build a Safari App Extension
  2. Inject a script into a webpage
  3. Pass message between your Safari app extension and injected script
© www.soinside.com 2019 - 2024. All rights reserved.