#wkwebview #createwebarchivedata
Вопрос:
Я пытаюсь захватить содержимое, отображаемое в веб-представлении (не источник, представляющий собой набор javascripts). Я надеюсь, что createWebArchiveData wkwebview — правильный метод.
Итак, где я запутываюсь, так это в том, что возвращается после звонка.
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.createWebArchiveData(completionHandler: { (result) in
})
в документах говорится, что результатом является результат<данные, ошибка>. Я набрал на нем тип(из:), и в журнале был напечатан результат<данные, ошибка>…спасибо, Эппл…
когда я напечатал результат, я получил:
success(5990802 bytes)
подумал, может быть, это кортеж, но результат.0 выдал ошибку…
Value of type 'Result<Data, Error>' has no member '0'
попытался преобразовать данные в строку…это не сработало…
попытался его разархивировать, но тоже не получилось.
Cannot convert value of type 'Result<Data, Error>' to expected argument type 'Data
так что буду признателен за любую помощь. Мне нужно то, что отображается на экране, а не исходный код (на случай, если я ошибаюсь в этом).
Ответ №1:
Я решил эту проблему. Результирующий объект представляет собой перечисление с двумя случаями успеха и неудачи. Вы бы прочитали значение (в данном случае, потому что это данные) примерно так:
webView.createWebArchiveData(completionHandler: { (result) in
//var strResult = String(utf8String: result)
switch result {
case .success(let data):
let str = String(decoding: data, as: UTF8.self)
print(str)
case .failure(let error):
print(error)
}
})