読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

Xcodeの独自FileTemplate

Objective-C Swift Xcode

今回エンジニアブログを担当する戸田です。

今回はXcodeのFile Templateについて紹介したいと思います。独自File Templateは、新規でクラスを作成する時に、毎回同じようなコードを書く手間を省く機能になります。今回はNSObjectを継承したクラスにProtocolを追加した独自File Templateを説明します。

File Templateの作成

1.前準備

Xcodeに用意されているFile Templateを再利用していきますので、次のパスから

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source/Cocoa Touch Class.xctemplate  

以下のフォルダとファイルをコピーして

  • NSObjectObjective-C/___FILEBASENAME___.h
  • NSObjectObjective-C/___FILEBASENAME___.m
  • NSObjectSwift/___FILEBASENAME___.swift
  • NSObjectSwift
  • TemplateIcon.png
  • TemplateIcon@2x.png
  • TemplateInfo.plist

独自のFile Templateを配置する場所は以下のパスになります。

~/Library/Developer/Xcode/Templates/File\ Templates  

上記のFile Templateパスに「SampleClass.xctemplate」フォルダを作成して、先ほどコピーしたフォルダとファイルを配置します。また、以下のフォルダ名をリネームします。

  • 「NSObjectObjective-C」→「NSObjectProtocolObjective-C」
  • 「NSObjectSwift」→「NSObjectProtocolSwift」

costom_file_template_01

2.TemplateInfo.plistの編集

Xcodeやテキストエディタ等で開きて、「Options」要素に以下の内容を追加します。また、追加する位置は先ほどリネームしたフォルダ名と関連するため追加する場所に気を付ける必要があります。

<dict>  
    <key>Default</key>  
    <string>false</string>  
    <key>Identifier</key>  
    <string>Protocol</string>  
    <key>Name</key>  
    <string>Protocol</string>  
    <key>RequiredOptions</key>  
    <dict>  
        <key>cocoaTouchSubclass</key>  
        <array>  
            <string>NSObject</string>  
        </array>  
    </dict>  
    <key>Type</key>  
    <string>checkbox</string>  
</dict>  

3.クラスファイル(Objective-C)の編集

「NSObjectProtocolObjective-C/FILEBASENAME.h」のファイルにプロトコルを定義します。

//  
// ___FILENAME___  
// ___PROJECTNAME___  
//  
// Created by ___FULLUSERNAME___ on ___DATE___.  
//___COPYRIGHT___  
//  
  
___IMPORTHEADER_cocoaTouchSubclass___  
  
@protocol ___FILEBASENAMEASIDENTIFIER___Delegate  
  
@end  
  
@interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___  
@property (nonatomic, assign) id<___FILEBASENAMEASIDENTIFIER___Delegate> delegate;  
  
@end  
  

4.クラスファイル(Swift)の編集

「NSObjectProtocolSwift/FILEBASENAME.swift」のファイルにプロトコルを定義します。

//  
//  ___FILENAME___  
//  ___PROJECTNAME___  
//  
//  Created by ___FULLUSERNAME___ on ___DATE___.  
//___COPYRIGHT___  
//  
  
import UIKit  
  
protocol ___FILEBASENAMEASIDENTIFIER___Delegate{  
  
}  
  
class ___FILEBASENAMEASIDENTIFIER___: ___VARIABLE_cocoaTouchSubclass___ {  
    var delegate: ___FILEBASENAMEASIDENTIFIER___Delegate! = nil  
}  
  

以上で設定は終わりになります。