我正在使用WebKit将电子邮件存储在Safari浏览器本地存储中。但是,我得到了一个错误
线程3:致命错误:展开包装时意外发现nil 可选值
将值存储在本地存储中的一种方法是使用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()
}
}
}
我的问题是,如何快速将值存储在safari浏览器localstorage中,以便我也可以从javascript访问该值。
答案 0 :(得分:1)
您没有从情节提要中连接webView插座(标记为Implicitly Unwrapped Optional),所以出现了此错误。
您可以使用CoreData,UserDefaults,FileManager,甚至是简单的SQLite来存储所需的内容。
编辑:
A Safari app extension可以阅读和修改您的网页内容。此外,它还允许您在浏览器中访问数据。
完成以下步骤以制作Safari应用扩展程序: