Этот вопрос проверяет понимание взаимодействия между нативным кодом Swift и JavaScript в контексте веб-представлений или гибридных приложений, что необходимо для разработки кросс-платформенных мобильных решений.
Взаимодействие между Swift и JavaScript — ключевая возможность для создания гибридных приложений, где часть логики или интерфейса реализована с помощью веб-технологий. Это позволяет повторно использовать код и ускорить разработку.
Существует два основных способа вызова JavaScript из Swift:
WKWebView обычно используется, когда у вас есть встроенная веб-страница или вы загружаете удалённый контент. Вот как можно выполнить простой скрипт:
import WebKit
class ViewController: UIViewController {
let webView = WKWebView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(webView)
// Загружаем HTML или URL
let html = "Hello"
webView.loadHTMLString(html, baseURL: nil)
// Вызываем JavaScript после загрузки
webView.evaluateJavaScript("document.title") { result, error in
if let title = result as? String {
print("Title from JS:", title)
}
}
}
}Метод evaluateJavaScript выполняет строку JS и возвращает результат в Swift через замыкание. Это полезно для получения данных из веб-интерфейса или вызова функций, определённых в загруженном скрипте.
JavaScriptCore подходит для случаев, когда вам нужно выполнить чистую JavaScript-логику без отображения веб-страницы. Например, для вычислений или обработки данных:
import JavaScriptCore
let context = JSContext()
// Выполняем JS-код
context?.evaluateScript("""
function add(a, b) {
return a + b;
}
""")
// Вызываем функцию из Swift
let addFunction = context?.objectForKeyedSubscript("add")
let result = addFunction?.call(withArguments: [5, 3])
print("Result:", result?.toString() ?? "none") // Вывод: 8Этот подход даёт полный контроль над средой выполнения JS, но не связан с UI.
Такое взаимодействие часто используется в:
Вывод: Вызов JavaScript из Swift целесообразен, когда нужно интегрировать веб-технологии в нативное приложение для гибкости, повторного использования кода или поддержки кроссплатформенности. Используйте WKWebView для взаимодействия с веб-интерфейсом, а JavaScriptCore — для изолированных вычислений.
Уровень
Рейтинг:
3
Сложность:
4
Навыки
JavaScript
Swift
Ключевые слова
Подпишись на iOS Developer в телеграм