Сегодня я расскажу как можно добавить свои шаблоны файлов в Xcode.
Вообще такая возможность в Xcode была всегда, сколько его помню, но тем не менее ранее я об этом не писал.
Введение
Xcode-шаблоны – это готовые макеты проектов или файлов для быстрого создания.
Давайте рассмотрим структуру Xcode-шаблона.
Шаблон – это папка с расширением xctemplate. Состоит как минимум из следующих файлов:
TemplateInfo.plist – файл конфигурации шаблона
TemplateIcon.png – иконка шаблона (рекомендуется использовать еще и TemplateIcon@2x.png для Маков с ретиной)
___FILEBASENAME___.swift – шаблон файла исходных кодов. В данном случае мы используем Swift
Давайте подробнее рассмотрим файл конфигурации TemplateInfo.plist, а точнее ключи, которые в нем используются:
AllowedTypes – массив используемых типов файлов в шаблоне. А нашем случае используется Swift: public.swift-source
DefaultCompletionName – имя файла по умолчанию. Используется при создании файла из шаблона
Description – краткое описание шаблона
Kind – тип шаблона. В нашем случае используется шаблон файла: Xcode.IDEFoundation.TextSubstitutionFileTemplateKind
MainTemplateFile – имя файла, который будет использоваться в качестве шаблона. В нашем случае используется ___FILEBASENAME___.swift
Summary – подробное описание шаблона
SortOrder – порядок для сортировки шаблонов. Чем больше значение, тем дальше он будет отображаться в списке шаблонов.
Расположение
Предустановленные Xcode-шаблоны проектов и файлов хранятся в папке самого Xcode:
Общие – /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates
Для платформы iOS – /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates
Мы можем создавать там свои шаблоны, но они будут стираться при каждом обновлении Xcode, поэтому нам этот вариант не подходит.
Чтобы наши шаблоны не были зависимыми от Xcode, необходимо создать следующий путь и помещать туда шаблоны:
~/Library/Developer/Xcode/Templates/File Templates/User Templates/
Примеры
Я подготовил пару примеров шаблонов для быстрого создания классов в парадигме MVC (включая распределение ViewController). Все они доступны на GitHub.
Model – класс модели с базовой инициализацией
View – класс вьюшки
ViewController – класс контроллера с базовыми часто используемыми методами
ViewController+Logic – расширение для контроллера, где будет реализовываться логика. Например, начальное конфигурирование и обновление UI
ViewController+UITableViewDataSource+Delegate – расширение для контроллера, где будет логика реализации протоколов UITableViewDataSource и UITableViewDelegate
Cell – класс ячейки таблицы
Helper – класс хелпера
Это далеко не все шаблоны, которые хотелось бы реализовать. Возможно, база будет пополняться.
Что примечательно, после добавления нового шаблона, не нужно перезапускать Xcode. При создании нового файла будет виден новый шаблон.