В этой статье я расскажу, как создавать свои сниппеты в Xcode и, собственно, расшаривать их между Маками.
Введение
Если коротко, то сниппеты – это часто используемые участки кода, которые упакованы в единую сущность. Xcode из коробки их поддерживает, поэтому грех этим не пользоваться.
В составе Xcode уже есть целый набор сниппетов, который можно использовать в панели Utilities / Code Snippet Library.
Xcode позволяет создавать собственные сниппеты, которые будут располагаться в следующей папке:
~/Library/Developer/Xcode/UserData/CodeSnippets
Давайте рассмотрим структуру Xcode-сниппета.
Сниппет – это plist-файл с расширением codesnippet. Состоит как минимум из следующих ключей:
IDECodeSnippetCompletionPrefix – префикс сниппета для подсказки его в коде
IDECodeSnippetCompletionScopes – массив расположений в коде, где может использоваться подсказка сниппета: All / ClassImplementation / CodeExpression / CodeBlock / StringOrComment / TopLevel
IDECodeSnippetContents – непосредственный код сниппета
IDECodeSnippetIdentifier – уникальный идентификатор сниппета
IDECodeSnippetLanguage – язык кода в сниппете. У нас используется Swift – Xcode.SourceCodeLanguage.Swift
IDECodeSnippetTitle – наименование сниппета
IDECodeSnippetUserSnippet – булевое значение для принадлежности пользовательскому сниппету
IDECodeSnippetVersion – версия сниппета
Создание сниппета
Создать сниппет можно несколькими способами. Расскажу о двух из них:
1) Удобен для создания сниппета из уже написанного кода.
Просто выделяем код в Xcode и перетягиваем его в окно Code Snippet Library.
Xcode предложит заполнить поля для конфигурации сниппета.
2) Удобен для создания сниппета на базе уже созданного.
Заходим в в папку пользовательских сниппетов:
~/Library/Developer/Xcode/UserData/CodeSnippets
Делаем дубликат готового сниппета и изменяем по своему назначению. Не забываем изменить идентификатор сниппета, он должен быть уникальным.
Для того, чтобы созданные этим путем сниппеты отображались в Xcode – необходимо его перезапустить.
Примеры
Несколько примеров для быстрого написания swift-кода в определенных случаях. Все они доступны на GitHub.
MARK – маркировка секций swift-кода
NSLocalizedString – локализированная строка
AddObserver – добавление наблюдателя за событием
UITableViewDataSource+Delegate – реализация протокола UITableViewDataSource и UITableViewDelegate
PrepareForSegue – реализация метода навигации