Xcode 9 个自定义模板如何更改?
How Xcode 9 custom templates changed?
下载 Xcode 9 beta 后,我注意到文件模板系统发生了变化。
例如,我有一个创建 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)
}
}
}
为了创建这个文件,我只是从
中挑选模板
New Files...
菜单,为ex添加一个名称。 TableCell 并回车。现在,当我这样做时,我的输出如下所示:
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 中,他们更改了模板中的内容(有些东西在 playgrounds 中带有模板,新手如何在 playgrounds 中使用模板?)。
回到问题,现在从模板创建文件后,TableCell.swift 看起来一样,但 TableCellView.swift 由于此更改而变得疯狂。
___FILEBASENAME___View
成为新人
___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
而只是
TableViewControllerDelegate
___FILEBASENAME___ 根据范围被替换,例如新创建的文件是
___FILEBASENAME___View.swift
使用关键字 "Table" 创建 TableView.swift - 其中 ___FILEBASENAME___ 不是 "Table" 而是 "TableView"
谁能告诉我是否有办法处理它? 也许有像 ___KEYWORD___ 这样的新东西? 在创建新文件时,我想输入一个关键字,该关键字在 [=72 的旧版本中会像 ___FILEBASENAME___ 一样工作=].帮助!
我的 github 上有一个适用于 Xcode 9,Beta 4 的工作解决方案。查看:https://github.com/reni99/Xcode-VIPER-Template
你要找的是这个变量:___VARIABLE_moduleName___
确保根据需要调整 TemplateInfo.plist。
希望这对您有所帮助:)
干杯
下载 Xcode 9 beta 后,我注意到文件模板系统发生了变化。
例如,我有一个创建 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)
}
}
}
为了创建这个文件,我只是从
中挑选模板New Files...
菜单,为ex添加一个名称。 TableCell 并回车。现在,当我这样做时,我的输出如下所示:
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 中,他们更改了模板中的内容(有些东西在 playgrounds 中带有模板,新手如何在 playgrounds 中使用模板?)。
回到问题,现在从模板创建文件后,TableCell.swift 看起来一样,但 TableCellView.swift 由于此更改而变得疯狂。
___FILEBASENAME___View
成为新人
___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
而只是
TableViewControllerDelegate
___FILEBASENAME___ 根据范围被替换,例如新创建的文件是
___FILEBASENAME___View.swift
使用关键字 "Table" 创建 TableView.swift - 其中 ___FILEBASENAME___ 不是 "Table" 而是 "TableView"
谁能告诉我是否有办法处理它? 也许有像 ___KEYWORD___ 这样的新东西? 在创建新文件时,我想输入一个关键字,该关键字在 [=72 的旧版本中会像 ___FILEBASENAME___ 一样工作=].帮助!
我的 github 上有一个适用于 Xcode 9,Beta 4 的工作解决方案。查看:https://github.com/reni99/Xcode-VIPER-Template
你要找的是这个变量:___VARIABLE_moduleName___
确保根据需要调整 TemplateInfo.plist。
希望这对您有所帮助:)
干杯