Как улучшить ваши приложения с помощью скриптов

Платформа iOS, начиная с iOS7, предоставляет инфраструктуру JavaScriptCore, способ использования механизма JavaScript WebKit, встроенного в наши приложения. Вы можете использовать его независимо от веб-представления, что делает его полезным компонентом, когда вы новичок в гибкости функции или набора функций.

Примечание. Весь представленный здесь код был запущен в Swift Playground (XCode 12.1).

Основы

Давайте начнем с основ, представленных в следующем коде:

Нам нужно импортировать структуру JavaScriptCore, чтобы использовать ее. Этот фреймворк предоставляет среду, заданную классом JSContext, которая предназначена для запуска скриптов (используя функцию evaluateScript).

Скрипт передается в функцию как обычная String. Таким образом, его можно определить в коде, получить из файла или даже из Интернета (из удаленного источника в виде серверного приложения).

Последний результат скрипта возвращает evaluateScript как JSValue (важно отметить, что это также может быть неопределенное значение).

JSValue предоставляет набор функций для преобразования значения javascript в значение Swift/Objective-C (toInt32, toString, toDate, toDate, >toArray между другими), а также функции для проверки возвращаемого типа (isNumber, isInt32, isString, isNull, isUndefined и т. д.). Используя этот набор инструментов, вы можете как проверить, что было возвращено, так и развернуть это значение, чтобы использовать его в своем коде Swift.

Передача данных туда и обратно

Возможно ли также хранить значения Swift в переменных javascript и получать значения переменных javascript для использования в коде Swift:

с помощью функции setObject мы можем получить значение Swift и сохранить его как переменную JavaScript (названную в соответствии с параметром forKeyedSubscript — обратите внимание, что имя должно быть приведено к типу NSString). Это значение может быть адресовано как переменная javascript, как мы видим в evaluateScript.

И наоборот, мы можем получить значение javascript (как тип JSValue), чтобы использовать его в Swift, используя функцию objectForKeyedSubscript.

Функции

В этой статье мы проверим, как установить среду javascript, выполнить скрипт и перейти от Swift к JavaScript и наоборот. В следующей статье будет рассказано о том, как объединить функции Swift для использования в javascript, а также о том, как вызывать функции javascript из Swift.