2017-06-29 14 views
8

मैंने फ़ाइल टेम्पलेट सिस्टम में परिवर्तन देखा।कैसे एक्सकोड 9 कस्टम टेम्पलेट्स बदल गए? Xcode 9 बीटा डाउनलोड करने के बाद

उदाहरण के लिए मेरे पास एक साधारण टेम्पलेट था जो 2 फाइलें बना रहा था (शायद यह उस तरह से काम नहीं करना चाहिए)। । बेस फ़ाइल नाम ___ FILEBASENAME ___ हैं

तेज

और

___ 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) 
     } 
    } 

} 

,

नई फ़ाइलें से इस फाइल को मैं सिर्फ टेम्पलेट उठा था बनाने के लिए ...

मेनू पूर्व के लिए एक नाम जोड़ें। टेबलसेल और हिट दर्ज करें। अब जब मैं करता हूँ यह मेरी उत्पादन इस तरह देखा:

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 में टेम्पलेट्स?)।

समस्या पर वापस, अब टेम्पलेट से फ़ाइलें बनाने के बाद, 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

उपयोग करते हुए कीवर्ड "तालिका" TableView.swift बनाता है - जिसमें ___FILEBASENAME___ "तालिका" नहीं है लेकिन "टेबल व्यू"

क्या कोई मुझे बता सकता है कि इसके साथ संभालने का कोई तरीका है या नहीं? शायद कुछ नया है जैसे ___KEYWORD___? नई फ़ाइल के निर्माण पर मैं एक ऐसा कीवर्ड दर्ज करना चाहता हूं जो Xcode के पुराने संस्करणों में ___FILEBASENAME___ जैसा काम करेगा। मदद!

उत्तर

10

मैं Xcode 9 के लिए मेरे GitHub पर एक काम समाधान है, बीटा 4. इसे देखें: https://github.com/reni99/Xcode-VIPER-Template

मैं यहाँ से समाधान मिल गया: https://github.com/infinum/iOS-VIPER-Xcode-Templates/tree/master/VIPER%20Templates/Module.xctemplate/UIViewController

क्या आप देख रहे हैं इस चर रहा है: ___VARIABLE_moduleName___

अपनी आवश्यकताओं के लिए अपने TemplateInfo.plist को समायोजित करना सुनिश्चित करें।

आशा इस :)

चीयर्स

+1

है यही मदद करता है मैं क्या देख रहा था! आपका बहुत बहुत धन्यवाद! –

+0

कोई समस्या नहीं :) खुशी हुई यह मदद की! –

संबंधित मुद्दे