Хотя Swift описывается как язык общего назначения, большинство поисковых запросов и документации по SwiftLang касаются iOS, MacOS и разработки на стороне сервера.

В этой статье будет рассмотрена полезность этого языка для служебных инструментов, которые не ограничены недостатками работы с основным каталогом набора приложений и ведут себя как более распространенный язык общего назначения, такой как Python.

Инструмент, который мы будем создавать, представляет собой простую программу для чтения и репликации файлов .swift, которую вы можете изменять и использовать по своему усмотрению и, возможно, создать инструмент для создания кода MVC или MVVM.

Основными компонентами нашей программы будут:

  • Функция, чтобы указать, какой файл мы хотим прочитать.
  • Функция для чтения файла.
  • Функция для записи строки в новый файл.

Элементы, которые вам понадобятся для этого:

Для начала нам нужно импортировать библиотеку Cocoa, чтобы иметь возможность использовать класс FileManager.

Для первой функции мы собираемся сделать приглашение с выводом на консоль, чтобы пользователь знал, что программа запущена и ожидает инструкций.

После этого пользовательский ввод будет преобразован в строку с помощью функции readLine():

Теперь нам нужна функция для чтения файла, который мы ей передали, и возврата строк из этого файла.

Разберем предыдущий код:

  1. Мы устанавливаем переменную для возврата из нашей функции, если декодирование из данных в строку прошло успешно, или для возврата nil, если это не так.
  2. Мы открываем блок do-try-catch, потому что декодирование String может вызвать ошибку, которую мы обрабатываем, печатая локализованное описание.
  3. Внутри do мы присваиваем декодированные данные из указанного пути (str) строке с попыткой, поскольку декодирование может завершиться ошибкой при использовании общего формата .utf8.
  4. Затем мы возвращаем переменную getStrings.

Теперь нам нужно записать возвращенную строку в файл .swift, для этого нам понадобится следующая функция:

Как и раньше, давайте разберем, что мы здесь делаем:

  1. Мы извлекаем путь из SearchPathForDirectoriesInDomains, который имеет множество полезных компонентов, например, начиная с .desktopDirectory, а затем добавляя к пути .userDomainMask. Вы должны поиграть с этим, и если каталог, который вы получаете, имеет ограничения на запись в него, мы можем вывести ошибку при записи.
  2. Мы безопасно пытаемся получить путь, по которому мы собираемся писать, используя ранее извлеченный путь, и мы добавляем компонент пути с именем «/Created», это просто добавляет файл Created в конец пути.
  3. Мы создаем каталог по указанному пути внутри блока do-try-catch и печатаем error.localizedDescription, если попытка не удалась.
  4. Мы назначаем имя файла с путем, который мы будем использовать для записи в него.
  5. Мы записываем в файл, используя do-try-catch, так как метод String.write может генерировать ошибки. Мы передаем файл для записи в него.
  6. *atomically установлено значение false, но вы можете использовать true, если хотите создать файл резервной копии, а затем назначить путь и файл для этого файла резервной копии, если не возникнет ошибок в соответствии с документацией Apple (https://developer.apple.com/ документация/основа/nsdata/1408033-запись)

Наконец, мы объединяем все это с помощью функции main(), которую мы будем использовать для вызова используемых нами элементов, которая может выглядеть так:

Для этой последней функции мы просто вызываем другие функции, которые возвращают необязательную строку, используя защитный параметр для необязательной привязки, и выходим из области действия основной функции, если значение равно nil.

В конце мы передаем строку для записи в файл и передаем то же имя файла, что и оригинал, с помощью String.components(separatedBy: «/»), а затем извлекаем последний элемент из массива, который мы получаем, который будет оригинальное имя файла.

Эту последнюю часть я делаю для простоты, но вы можете передать свое собственное имя файла или сгенерировать его с помощью другой функции.

Важно: последнее, что нам нужно сделать, это вызвать функцию main(), чтобы выполнение началось при запуске файла.

Для запуска файла нам понадобится вышеупомянутый Swift Command-Line-Tool в консоли с:

Вы должны получить следующее сообщение в своем терминале:

«Укажите путь к файлу .swift»

И вы должны ввести полный путь от ~/ до файла, который вы хотите скопировать. Вы можете просто перетащить файл в терминал, чтобы получить путь

После того, как вы нажмете Enter, в зависимости от установленного вами пути, вы должны скопировать тот же файл в папку «Рабочий стол/Созданные».

Прямо сейчас это не кажется чем-то большим, но вы можете легко изменить его с помощью String-fu, чтобы проверить, содержит ли файл «контроллер» и добавить его в папку /Controller, или заканчивается моделью и добавить ее вам /Model папку, чтобы упорядочить файлы, если вы реализуете архитектуру Model-View-Controller.

Вот готовая программа:

Испанскую версию вы можете найти в этой статье в средней публикации Reboot Club: