Xcode 9的自定义模板有哪些变化?

9

在下载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)
        }
    }

}

为了创建这个文件,我只是从“新建文件”菜单中选择了一个模板,添加了一个名称(例如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中,他们在模板中进行了更改(与游乐场中的模板有关,但新手又怎么会在游乐场中使用模板呢?)。

回到问题本身,现在从模板创建文件后,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)
        }
    }

}

现在问题变得更加复杂,当我创建具有相互依赖关系的多个文件时,例如我拥有一个带有委托到TableCellViewControllerDelegate的TableCellManager,现在创建文件时它看起来像这样:

TableCellManagerViewControllerDelegate

而不只是

TableViewControllerDelegate

___FILEBASENAME___会根据范围替换,在新创建的文件为例如

___FILEBASENAME___View.swift

使用关键字"Table"创建TableView.swift - 其中 ___FILEBASENAME___ 不是 "Table" 而是 "TableView"。
有人能告诉我是否有一种处理它的方法吗?也许有什么新东西像 ___KEYWORD___?在创建新文件时,我想输入一个关键字,它可以像Xcode旧版本中的 ___FILEBASENAME___ 一样工作。帮帮忙!
1个回答

11

1
这正是我正在寻找的!非常感谢你! - Maciej Zajda
没问题 :) 很高兴能帮到你! - Renato Stauffer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接