14 мар. 2016 г.

Создание шаблона (темплейта) файла для Xcode / Create Xcode source template


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

Например нам  нужно создать синглетон класс. Наши действия:
- Файл -> Новый -> Файл -> Соурс -> Свифт-файл (File -> New -> File -> Source -> Swift file)
- В новом файле написать код синглетона (хоть это всего лишь несколько строчек кода - это все-таки занятое время для шаблона)

import Foundation

class NewFile {

static let sharedInstance = NewFile()
private init(){}

}

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

Шаблон состоит из имени и расширения (как обычный пакет в OS X): TemplateName.xctemplate

Сам пакет состоит из таких файлов:
- Иконка файла (48х48), формата *.png (включая @2х (96х96) для ретина дисплеев)
- plist-файл в котором описывается наш шаблон
- swift-файл с кодом нашего шаблона.

Приступим:

- Создадим папку с расширением шаблона: Swift Singleton.xctemplate:


Все следующие действия будут происходить в созданной нами папке-шаблоне

- Перейдем в папку и скопируем туда два файла-иконки (по которому мы в будущем будем ориентироваться что это наш шаблон синглетон). Плюнем на все свои правила и закинем туда обычные иконки свифт-файла:

- Создадим plist-файл и опишем наш шаблон (не буду вести подробный разбор каждого раздела, думаю что все предельно ясно из названий самих разделов):
Содержимое:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AllowedTypes</key>
<array>
<string>public.swift-source</string>
</array>
<key>DefaultCompletionName</key>
<string>File</string>
<key>Description</key>
<string>A Swift Singleton.</string>
<key>Kind</key>
<string>Xcode.IDEKit.TextSubstitutionFileTemplateKind</string>
<key>MainTemplateFile</key>
<string>___FILEBASENAME___.swift</string>
<key>SortOrder</key>
<string>5</string>
<key>Summary</key>
<string>A Swift Singleton</string>
</dict>
</plist>

- Переходим к содержимому нашего сердца шаблона - swift-файл:
Содержимое:

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//

import Foundation

class ___FILEBASENAMEASIDENTIFIER___ {

    static let sharedInstance = ___FILEBASENAMEASIDENTIFIER___()
    private init(){}
    
}

___FILEBASENAMEASIDENTIFIER___ - вместо этого идентификатора будет подставляться введенное имя юзером во время создания нового файла-синглетона. Остальные идентификаторы интуитивно понятны.

- Теперь осталось перейти: ~Library/Developer/Xcode/Templates/File Templates/

Папки Templates и File Templates нужно будет создать, т.к. они отсутствуют (если Вы не ставили шаблоны, например с помощью утилиты Alcatraz). File Templates - это не обязательное имя. Я для себя назвал User Templates.

- Осталось скопировать наш шаблон-папку по выше указанному пути, и создать новый файл в проекте. Теперь в списке разделов (для iOS) появится дополнительный наш раздел, где будет присутствовать наш шаблон-синглетон (Если что-то пошло не так, всегда можно перезапустить Xcode).


Вводим имя файла и наслаждаемся дальнейшей работой уже с готовым шаблоном.

Примеры шаблонов можно посмотреть в самом Xcode:   /Applications/Xcode.app/ Contents/Developer/Platforms/ iPhoneOS.platform/Developer/ Library/Xcode/Templates/ File Templates/Source

0 коментарі:

Отправить комментарий