その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

Xcode 4 に自作ファイルテンプレートを追加する

Xcodeで新しいクラスを作ろうとすると、



こんな感じでテンプレートを選択できます。


が、見ての通りあんまり種類がありません
(よく使うのはUIViewControllerのサブクラスと標準クラスぐらい)


APIをコールするクラスとか、DBにアクセスするクラスとか、UITableViewを持つUIViewControllerとか、アプリを何個もつくってるとさすがに何度も同じコードを書いてる気がしてきたので、ちゃんとテンプレートを整備することにしました。


※参考ページ
Xcodeのテンプレートを作成する方法

カスタムテンプレートファイルの置き場

ファイルの置き場などは上記参考ページの頃とは変わっているようです。
私の環境(Xcode4)では、

  • デフォルトのテンプレートが入っている場所

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates

  • 自分で作成したテンプレートを置く場所

~/Library/Developer/Xcode/Templates

でした。(最初はTemplatesというフォルダはありません)


試しにTemplatesフォルダをごっそり~/Library/Developer/Xcode/にコピーしたところ、新規ファイル作成時のテンプレート選択ダイアログはこうなりました。



追加されて選択肢が倍増していることがわかります。

テンプレートの作成手順

Cocoa Touch ClassディレクトリとObjective-C classディレクトリが階層構造になっており、その下のHogehoge.pbfiletemplateが実際のテンプレートになります。中のclass.hとclass.mを書き換えることで、テンプレートの内容を変更できます。


というわけで、試しに個人的には非常に使用頻度の高い、「UITableView入りのUIViewControllerサブクラス」のテンプレートを作ってみました。

  1. "UIViewController subclass.xctemplate"フォルダを"UIViewController subclass custom.xctemplate"にリネーム
  2. "UIViewControllerwithXIB"フォルダを"UIViewControllerwithXIBwithUITableView"にリネーム
  3. "UIViewControllerwithXIBwithUITableView"フォルダ配下の"___FILEBASENAME___.*"を編集して所望のテンプレートを作成
  4. 同じ階層にあるTemplateInfo.plistのOptions要素に、withUITableView要素を追加
<key>Options</key>
<array>
	(略)
	<dict>
		<key>Default</key>
		<string>true</string>
		<key>Identifier</key>
		<string>withUITableView</string>
		<key>Name</key>
		<string>With UITableView</string>
		<key>Type</key>
		<string>checkbox</string>
	</dict>
</array>

以上の手順でテンプレートを自作し、Xcode4から新規ファイル作成をしてみると、以下のように自作ファイルテンプレートを選択できるようになりました。





なんでもっと早くやらなかったんだろってぐらい便利です。
というわけでこの週末はひたすらテンプレート整備に明け暮れたいと思います!