В 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