无法使用 swift 在 safari 浏览器本地存储中存储值
Could not store value in safari browser localstorage using swift
我正在使用 WebKit 将电子邮件存储在 safari 浏览器本地存储中。但是,我收到
的错误
thread 3: Fatal error: Unexpectedly found nil while unwrapping an
Optional value
在 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 浏览器本地存储中,以便我也可以从 javascript 访问它。
您没有从 Storyboard 连接 webView 插座(标记为 Implicitly Unwrapped Optional),所以出现此错误。
您可以使用CoreData, UserDefaults, FileManager, even simple SQLite存储您想要的内容。
编辑:
A Safari app extension可以读取和修改您的网页内容。它还允许您在浏览器中访问数据。
完成以下步骤制作 Safari 应用程序扩展:
我正在使用 WebKit 将电子邮件存储在 safari 浏览器本地存储中。但是,我收到
的错误thread 3: Fatal error: Unexpectedly found nil while unwrapping an Optional value
在 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 浏览器本地存储中,以便我也可以从 javascript 访问它。
您没有从 Storyboard 连接 webView 插座(标记为 Implicitly Unwrapped Optional),所以出现此错误。
您可以使用CoreData, UserDefaults, FileManager, even simple SQLite存储您想要的内容。
编辑:
A Safari app extension可以读取和修改您的网页内容。它还允许您在浏览器中访问数据。
完成以下步骤制作 Safari 应用程序扩展: