Использование действий с повторами в программе «Быстрые команды»
Действия «Повторить» и «Повторить для каждого объекта» позволяют выполнять совокупность последовательных действий несколько ряд подряд.
Использование действия «Повторить»
Добавив действие «Повторить» в быструю команду, Вы увидите, что оно содержит два маркера: «Повторить» (не отображается как отдельный тег) и «Конец повтора». Разместите действия, которые требуется повторить, между маркерами «Повторить» и «Конец повтора», а затем укажите, сколько повторов требуется выполнить. При выполнении быстрой команды действия, расположенные между маркерами, выполняются в режиме цикла указанное количество раз.
Например, цикл повтора с действием «Вызвать вибрацию устройства» и указанием параметра «Повторить 3 раза» вызывает троекратную вибрацию устройства iOS во время выполнения быстрой команды.
В цикл повтора можно помещать неограниченное количество действий. Действия выполняются по порядку (с первого по последнее), и по завершении выполнения последнего действия быстрая команды возвращается к первому действию и продолжает выполнение в режиме цикла указанное количество раз.
Совет. В быстрых командах действия «Повторить» можно встраивать друг в друга. В редакторе быстрой команды перетяните второе действие «Повторить» так, чтобы наложить его на нижнюю часть первого действия «Повторить». Второе действие «Повторить» встроится в область под первым действием «Повторить».
Перемещение входных данных при использовании действия «Повторить»
При передаче входных данных действию «Повторить» они передаются в действие, расположенное в начале цикла, без каких-либо изменений. К примеру, если в быстрой команде содержится действие «Текст», после которого расположен цикл повтора с действием «Произнести», в результате выполнения быстрой команды один и тот же текст будет произнесен несколько раз.
Выходные данные, получаемые в результате выполнения последнего действия в каждом цикле, помещаются в список, который является выходными данными действия «Повторить» в целом.
К примеру, в выходных данных, полученных в результате действия «Повторить» с четырехкратным повтором цикла и действием «Получить последнее фото», для каждого повтора цикла содержится последнее сохраненное фото в программе «Фото». По завершении всех четырех циклов выходные данные оформляются в виде списка из четырех одинаковых фото. Эти четыре фото становятся выходными данными действия «Повторить» в целом и передаются следующему действию после выполнения повторов.
Подробнее о входных и выходных данных см. в разделе Как выполняются быстрые команды?
Совет. Коснитесь пустого места слева от кнопок «+» и «-», чтобы назначить количество повторов переменной. Например, если добавить переменную «Спросить при запуске» в параметр «Повторить» действия «Повторить», во время выполнения быстрой команды откроется диалоговое окно с вопросом, сколько раз требуется повторить цикл.
Использование действия «Повторить для каждого объекта»
Действие «Повторить для каждого объекта» использует список объектов в качестве входных данных и выполняет одну и ту же последовательность действий по одному разу для каждого объекта списка. Это удобно при работе с несколькими файлами или с контентом, состоящим из нескольких объектов. Данный вид цикла повторяется до тех пор, пока требуемые шаги не будут выполнены для каждого объекта, переданного действию.
Например, если в быстрой команде для действия «Получить предстоящие события» количество таких событий Календаря — четыре, а после него расположено действие «Повторить для каждого объекта», цикл повтора выполняется четыре раза, и в начале каждого из этих циклов одно событие Календаря передается во входных данных.
Добавив действие «Повторить для каждого объекта» в быструю команду, Вы увидите, что оно содержит два маркера: «Повторить для каждого объекта» (не отображается как отдельный тег) и «Конец повтора».
По завершении цикла повтора выходные данные, переданные маркеру «Конец повтора» по результатам выполнения цикла для каждого объекта, объединяются и передаются дальше в качестве выходных данных действия «Повторить для каждого объекта» в целом.
Переменная «Повтор объекта»
Для действия «Повторить для каждого объекта» существует специальная переменная, которую можно использовать для отслеживания текущего объекта: «Повтор объекта». Содержимое переменной «Повтор объекта» обновляется при выполнении цикла для каждого из объектов списка и содержит объект, который был передан в качестве входных данных для текущей итерации цикла.
Например, если передать 10 событий Календаря действию «Повторить для каждого объекта», переменная «Повтор объекта» будет содержать одно из этих событий Календаря в каждой из 10 итераций цикла.
Примечание. Если разместить действие «Повторить для каждого объекта» внутри другого такого же действия, имя переменной изменится на «Повтор объекта 1», таким образом обозначив принадлежность содержимого к вложенному циклу повтора, или на «Повтор объекта 2» для обозначения цикла, вложенного в другой вложенный цикл, и т. д.
Переменная «Номер повтора»
Во всех циклах повтора доступна специальная переменная «Номер повтора», которая используется для отслеживания текущей итерации. Переменная «Номер повтора» содержит число, соответствующее тому, сколько раз цикл повторился на данный момент. Для первой итерации цикла используется число 1 с последующим наращением значения для каждой выполненной итерации. При втором выполнении цикла номер повтора равен двум; при третьем выполнении цикла номер повтора равен трем; и т. д.
Примечание. Если разместить действие «Повторить» внутри другого такого же действия (и таким образом создать вложенные циклы повтора), имя переменной для вложенного действия с повтором меняется на «Номер повтора 2» Для дополнительного вложенного действия с повтором появится переменная «Номер повтора 3» и т. д.
Подробную информацию см. в разделе Использование переменных в программе «Быстрые команды».
Создание бесконечных циклов
Несмотря на то, что в программа «Быстрые команды» не предусмотрено действие, запускающее бесконечное повторение последовательности действий, это поведение можно воспроизвести с помощью действия «Запустить быструю команду». Действие «Запустить быструю команду» позволяет запускать выполнение одной быстрой команды в ходе выполнения другой. Настройте действие «Запустить быструю команду» так, чтобы оно запускало выполнение той же быстрой команды, внутри которой оно находится. В результате эта быстрая команда будет начинаться снова сразу после завершения, и так будет повторяться до тех пор, пока Вы не остановите быструю команду.
Проверка выходных данных
На этапе изучения функциональности действий «Повторить» и «Повторить для каждого объекта» полезно проверять результаты, получаемые после маркера «Конец повтора», чтобы убедиться в соответствии результата ожидаемому. Разместите действие «Быстро просмотреть» после маркера «Конец повтора», чтобы отобразить в предпросмотре объекты, полученные в выходных данных цикла повтора.
Также можно поместить действие «Показать оповещение» после маркера «Конец повтора» и вставить Волшебную переменную «Результаты повторов» в поле сообщения, чтобы отобразить в уведомлении текст из полученных в конце цикла выходных данных. Если Вы хотите проверить цикл, расположенный в середине длинной быстрой команды, полезно использовать действие «Показать оповещение» для отображение результатов в предпросмотре, так как Вы можете включить в уведомление кнопку отмены и завершить быструю команду на текущем этапе цикла.