после загрузки бета-версии Xcode 9 я заметил изменения в системе файловых шаблонов.
Например, у меня был простой шаблон, который создавал 2 файла (вероятно, это вообще не должно работать). Базовые имена файлов
___FILEBASENAME___.swift
а также
___FILEBASENAME___View.swift
и создает TableCell.swift и TableCellView.swift, вот коды:
//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//
import Foundation
import UIKit
class ___FILEBASENAME___: UITableViewCell {
let mainView = ___FILEBASENAME___View()
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupCell()
contentView.addSubview(mainView)
mainView.setupView()
}
fileprivate func setupCell() {
backgroundColor = UIColor.clear
selectionStyle = .none
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
И просмотр файла:
//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//
import Foundation
import UIKit
import SnapKit
fileprivate struct Constants {
}
class ___FILEBASENAME___View: UIView {
func setupView() {
setupSelf()
}
fileprivate func setupSelf() {
snp.makeConstraints { (make) in
make.leading.trailing.top.bottom.equalTo(0)
}
}
}
Чтобы создать эти файлы, я просто выбирал шаблон из
Новые файлы...
меню, добавьте имя для напр. TableCell и нажмите Enter. Теперь, когда я это делаю, мой вывод выглядит так:
import Foundation
import UIKit
class TableCell: UITableViewCell {
let mainView = TableCellView()
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupCell()
contentView.addSubview(mainView)
mainView.setupView()
}
fileprivate func setupCell() {
backgroundColor = UIColor.clear
selectionStyle = .none
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
а также
import Foundation
import UIKit
import SnapKit
fileprivate struct Constants {
}
class NewCellView: UIView {
func setupView() {
setupSelf()
}
fileprivate func setupSelf() {
snp.makeConstraints { (make) in
make.leading.trailing.top.bottom.equalTo(0)
}
}
}
Теперь проблема в том, что в Xcode 9 они изменили шаблоны (что-то с шаблонами на игровых площадках, как новичок вообще будет использовать шаблоны на игровых площадках?).
Вернемся к проблеме: теперь, после создания файлов из шаблона, TableCell.swift выглядит так же, но TableCellView.swift сходит с ума из-за этого изменения.
___FILEBASENAME___Просмотр
становится новым
___ИМЯ БАЗЫ ФАЙЛОВ___
так что теперь, когда я создаю TableCellView, это выглядит так:
import Foundation
import UIKit
import SnapKit
fileprivate struct Constants {
}
class TableCellViewView: UIView {
func setupView() {
setupSelf()
}
fileprivate func setupSelf() {
snp.makeConstraints { (make) in
make.leading.trailing.top.bottom.equalTo(0)
}
}
}
Теперь проблема усложняется, когда я создаю несколько файлов с зависимостями друг от друга, например, у меня есть TableCellManager с делегатом в TableCellViewControllerDelegate, теперь при создании файлов это выглядит так
TableCellManagerViewControllerDelegate
вместо этого просто
Таблевиевконтроллерделегат
___FILEBASENAME___ заменяется в зависимости от области действия, например, если вновь созданный файл
___FILEBASENAME___View.swift
использование ключевого слова «Таблица» создает TableView.swift, в котором ___FILEBASENAME___ не «Таблица», а «TableView»
Может ли кто-нибудь сказать мне, есть ли способ справиться с этим? Может быть, есть что-то новое, например ___KEYWORD___? При создании нового файла я хочу ввести ключевое слово, которое будет работать как ___FILEBASENAME___ в более старых версиях Xcode. ПОМОЩЬ!