Загрузить код с сервера для оценки простых строковых и математических операций на устройстве iOS?

Я знаю, что невозможно загрузить и выполнить код Objective-C/Swift с сервера на устройстве без отказа. Однако можно ли загрузить, скажем, какой-нибудь javascript или код другого языка и выполнить его на устройстве?

Я создаю приложение, в котором мне нужно оценить, проходит ли строка пользователя проверку через различные операции.

Например, у пользователя есть строка ABC123.

Мой список операций (который будет динамическим, поэтому я могу добавить больше операций со стороны сервера) может быть таким:

  1. String.length == 6?
  2. Является ли String.substring (3,5) числовым?
  3. Является ли сумма цифр на 4,5,6 позициях == 6?

и т.п.

Я думал о том, чтобы загрузить код JavaScript с моего сервера, в котором был бы весь список операций. Затем передайте строку пользователя через этот код для проверки. Однако я не уверен, как это сделать.


person sudoExclaimationExclaimation    schedule 22.05.2017    source источник
comment
Любая причина не выполнять ваши операции на стороне сервера и возвращать результат вашему клиенту?   -  person GIJOW    schedule 22.05.2017
comment
@GIJOW Да, в основном потому, что это снизит нагрузку на мой сервер. Я использую бесплатную версию сервера, которая ограничивает количество запросов и ответов, которые я могу отправить. Если я могу выполнять операции на стороне клиента, моему серверу не придется выполнять вычисления.   -  person sudoExclaimationExclaimation    schedule 23.05.2017
comment
Да, в этом случае вы можете воспользоваться предложением Оуэна. Получите свой скрипт в веб-просмотре, и в вашем Swift вы сможете вызывать эти скрипты и получать их результаты. Есть несколько способов использовать встроенный js в swift, один из них — использовать класс WKUserScript из webkit или stringByEvaluatingJavaScript из вашего веб-просмотра.   -  person GIJOW    schedule 23.05.2017
comment
может быть, это может быть полезно stackoverflow.com/questions/35650931/   -  person GIJOW    schedule 23.05.2017
comment
@GIJOW Вы случайно не знаете, отклонит ли Apple мое приложение для загрузки/выполнения такого рода кода? Я использую его в законных целях.   -  person sudoExclaimationExclaimation    schedule 23.05.2017
comment
Я почти уверен, что у вас не возникнет никаких проблем. Я бы реализовал на веб-страницах и получил выполнение из веб-просмотра внутри вашего приложения. Вы можете реализовать таким образом, чтобы пользователь не осознавал, что находится на веб-странице.   -  person GIJOW    schedule 23.05.2017
comment
@GIJOW Хорошо, спасибо! Я обновлю решение, как только попробую.   -  person sudoExclaimationExclaimation    schedule 23.05.2017


Ответы (1)


Вы можете открыть любую веб-страницу в Safari или в UI/WK WebView и запустить javascript на этих страницах. Конечно, вы можете запустить эти тесты в Objective C, не обращаясь к серверу, или вы можете настроить некоторые вызовы RESTful, используя что-то вроде AFNetworking, чтобы отправить вашу строку на ваш сервер и вернуть соответствующий результат.

person Owen Hartnett    schedule 22.05.2017
comment
Итак, если я правильно понимаю, я должен загрузить свой javascript в веб-просмотр, передать строку в веб-просмотр и позволить ему вернуть мне результат операций? - person sudoExclaimationExclaimation; 23.05.2017
comment
Это будет работать. Будет ли это лучше для вашего приложения, зависит от вас. - person Owen Hartnett; 23.05.2017