У меня есть переменная, для которой я хочу иметь слушателя, когда вы устанавливаете и изменяете его, и didSet кажется идеальным кандидатом.Тем не менее, в моем первоначальном тестировании, первое добавление запускает набор заданий и (в моем примере) JS загружается в мое веб-представление, однако я никогда не вижу, чтобы второе добавление достигло точки останова на didSet, и JS не запускается, потому что ононе должен быть загружен.Что может происходить?
var additionalJSFilesToRun: [(String, WKUserScriptInjectionTime)] {
didSet {
for (string, time) in additionalJSFilesToRun {
guard !self.jsFiles.contains(string) else { return }
guard let jsPath = Bundle.main.path(forResource: string, ofType: "js"), let jsSource = try? String(contentsOfFile: jsPath) else { return }
let script = WKUserScript(source: jsSource, injectionTime: time, forMainFrameOnly: false)
self.webView.configuration.userContentController.addUserScript(script)
jsFiles.insert(string)
}
}
}
В другом классе:
webView.additionalJSFilesToRun.append(("ABC", .atDocumentStart))
webView.additionalJSFilesToRun.append(("DEF", .atDocumentStart))
Только ABC вызывает didSet.Есть мысли, почему одна мутация делает это, а другая нет?