Membuat Template File Sederhana untuk Xcode

Posted in Blog, Swift on

Saat Kamu bekerja pada area baru project, menambahkan fitur baru, menulis kode baru, atau bahkan refactoring dan mengatur ulang kode yang ada, Kamu sering perlu membuat banyak file baru. Cara paling umum untuk melakukannya adalah melalui menu File> New> File … di Xcode. Tergantung pada jenis file, Kamu mungkin bertemu dengan template yang rumit, dengan beberapa kode boilerplate untuk membantu Kamu memulai. Ini bisa bermanfaat ketika mengenal Apple frameworks, atau yang lebih baru untuk menghemat waktu menulis kode yang membosankan. Bukankah lebih baik bagi kita untuk menyesuaikan template ini lebih lanjut?
Untuk memiliki template yang dirancang khusus untuk style, project, atau selera Kamu sendiri? Mari kita lihat cara membuat templat file Anda sendiri dengan Xcode.

Anatomi Template File

Pada tingkat sistem file, Template File Xcode hanyalah folder dengan beberapa konvensi. Template yang dibuat user harus ditempatkan di:

~/Library/Developer/Xcode/Templates/File Templates/<Custom Group Name>

Kamu dapat membuat beberapa grup, untuk artikel ini mari kita buat grup My Custom Template. Dalam folder ini Kamu dapat membuat sejumlah template. Jadi mari kita bayangkan kita mulai dengan folder baru bernama Basic Template.xctemplate, itulah Template File Xcode pertama kita.

Sekarang cobalah membuat folder Basic Template.xctemplate di dalam My Custom Template.

– πŸ“ My Custom Template
——–πŸ“ Basic Template.xctemplate

Dalam folder ini Kamu dapat membuat sejumlah template. Jadi mari kitaSpesifikasi minimum yang setidaknya Kamu perlukan adalah:

– πŸ“ Basic Template.xctemplate
——- πŸ“„ ___FILEBASENAME___.swift
——- πŸ“„ TemplateInfo.plist

Untuk contoh ini, mari kita gunakan kode yang paling dasar untuk ___FILEBASENAME___.swift:

//  ___FILEHEADER___

import Foundation

class ___FILEBASENAME___ {
  
}

File .plist membutuhkan setidaknya key Kind (tipe string), yang dapat mengambil 2 nilai. Yang paling sering digunakan adalah Xcode.IDEKit.TextSubstitutionFileTemplateKind.

Spesifikasi minimum yang setidaknya Kamu perlukan adalah:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Kind</key>
  <string>Xcode.IDEKit.TextSubstitutionFileTemplateKind</string>
</dict>
</plist>

Sekarang coba ke menu File->new->File atau dengan shortcut Cmd+N Kamu seharusnya dapat melihat template kamu di Xcode:

Berikut beberapa Key sederhana lainnya yang perlu Kamu ketahui:

  • DefaultCompletionNameΒ (tipe String): digunakan untuk mengisi textField nama file dalam dialog “Save As”
  • AllowedTypesΒ (tipe array dari String): digunakan untuk membatasi jenis file yang dapat disimpan. Nilainya adalah string dariΒ Uniform Type Identifiers. Yang paling umum digunakan adalah:
    • public.swift-source
    • public.c-header
    • public.c-source
    • public.c-plus-plus-source
    • public.objective-c-source
    • public.objective-c-plus-plus-source
  • PlatformsΒ (tipe array dari String): digunakan untuk membatasi template ke platform tertentu, jadi template hanya akan muncul pada tab platform yang ditentukan. Berikut value arraynya:
    • com.apple.platform.macosx
    • com.apple.platform.iphoneos
    • com.apple.platform.watchos
    • com.apple.platform.appletvos

Nah sekarang kita akan coba merubah .plist menjadi :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Kind</key>
  <string>Xcode.IDEKit.TextSubstitutionFileTemplateKind</string>
  <key>DefaultCompletionName</key>
  <string>Basic</string>
  <key>AllowedTypes</key>
  <array>
    <string>public.swift-source</string>
  </array>
  <key>Platforms</key>
  <array>
    <string>com.apple.platform.iphoneos</string>
  </array>
</dict>
</plist>

Sekarang Kamu hanya bisa melihat basic template di dalam tab iOS, dan ketika Kamu menyimpan file, dialog yang muncul akan otomatis diset ke Basic.swift. Jika Kamu menekan Create, Xcode akan membuat copy dari file ___FILEBASENAME___.swift dan mengganti semua instance makro FILEBASENAME dengan apa pun yang Kamu masukkan dalam dialog.

//
//  Basic.swift
//  My Awesome App
//
//  Created by Fadilah Hasan on 01/03/20.
//  Copyright Β© 2020 Fadilah Hasan. All rights reserved.
//

import Foundation

class Basic {
    
}

Tapi bagaimana jika kita ingin membuat nama dari Class sama dengan nama file yang dihasilkan?
Sebagai contoh coba Kamu rename ___FILEBASENAME___.swift menjadi ___FILEBASENAME___ViewController.swift.

Sebenarnya ada 2 cara untuk melakukannya. Kamu bisa menggunakan

class ___FILEBASENAME___ViewController { }

atau

class ___FILEBASENAMEASIDENTIFIER___ { }

Tapi mari kita gunakan ___FILEBASENAMEASIDENTIFIER___ karena tidak merepotkan.

//  ___FILEHEADER___

import Foundation

class ___FILEBASENAMEASIDENTIFIER___ {
  
}

Lalu sekarang Kamu cobalah membuat file baru. Maka hasilnya akan terlihat Seperti.

//
//  BasicViewController.swift
//  My Awesome App
//
//  Created by Fadilah Hasan on 01/03/20.
//  Copyright Β© 2020 Fadilah Hasan. All rights reserved.
//

import Foundation

class BasicViewController {
    
}

Generate Multiple file

Setelah mempelajari dasar dari membuat template yang menghasilkan 1 file. Sebenarnya Kamu dapat generate lebih dari 1 file misalkan saja Kamu ingin template yang menghasilkan sebuah ViewController dan Model, ViewController, Model, ViewModel dan sebagainya

Kamu hanya tinggal menambahkan file tersebut di dalam templatenya.

– πŸ“ Basic Template.xctemplate
——- πŸ“„ ___FILEBASENAME___ViewController.swift
——- πŸ“„ ___FILEBASENAME___Model.swift
——- πŸ“„ ___FILEBASENAME___ViewModel.swift
——- πŸ“„ TemplateInfo.plist

Sentuhan Akhir

Sentuhan akhir agar template terlihat profesional tentu saja dengan menambahkan icon!
Xcode akan mengenali file-file berikut untuk ikon template Kamu:

– πŸ“· TemplateIcon.png (48 x 48)
– πŸ“· TemplateIcon.png (96 x 96)

Tempatkan file icon bersama dengan file TemplateInfo.plist.

Kamu dapat lihatΒ Basic Template di GitHub .

Semoga bermanfaat

0 0 votes
Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

0
Would love your thoughts, please comment.x
()
x