20. Aug 2021iOS

Xcode project templates - sprievodca spustením a návod kde ich nájsť

Premýšľali ste niekedy nad tým, prečo tvorba nových projektov trvá tak dlho? Teraz už nemusíte ani premýšľať. Ak chcete nastaviť novú šablónu projektu, ktorú môžete použiť na mnoho ďalších projektov, pozrite sa na stručného sprievodcu spustením. Pripravil som ho krok po kroku. Poďme si to skúsiť.

Andrej JaššoiOs Developer

Ak ste niekedy mali tú česť setupnúť projekt na development, viete, že to trvá dlho pokiaľ začínate od nuly. Ak máte nejaké projekty, ktorými sa môžete inšpirovať, trvá to o niečo kratšie, pretože môžete skopírovať základnú architektúru a rozšírenia, ktoré pravdepodobne použijete, ale stále to trvá pomerne dlho. Zvlášť ak sa vo svojej spoločnosti snažíte zachovať konzistentnú štruktúru projektu a pomenovanie. Preto sme pre teba pripravili sériu návodov, ako si setupnúť Xcode templaty. Po prečítaní tohto článku, môžeš pokračovať na automatickú konfiguráciu projektu a na návod ako automatizovať konfiguráciu swiftlintu a swiftgenu.

Tento nástroj sa zíde, pretože z rovnice odoberá veľa ľudského faktora. Veríme, že rady z nášho tímu vám budú nápomocné!

Šablóny projektov sú veľmi účinný nástroj.

Primárne sa používa na prepojenie súborov, vytváranie priečinkov v konkrétnom poradí s dynamickou hlavičkou súboru. V tomto článku vám ukážem, ako nastaviť projektovú hierarchiu pomocou šablón projektu.

Existujú files templates, ktoré vám umožňujú vytvárať súbory v existujúcom projekte, a existujú project templates na vytváranie celých projektov od začiatku.

Rozdiely medzi templatmi súborov a templatmi projektov a základné informácie o templatoch Xcode sú v mojom predchádzajúcom článku na Medium. Uistite sa, že ste si ho prečítali ako prvý.

Ak to zhrniete, musíte prejsť do tohto priečinka (ak neexistuje, vytvorte ho):/Users/$ USER_NAME/Library/Developer/Xcode/Templates/Project Templates všetko čo je vo vašej template folder bude zahrnuté vo vašom Project creation wizard, pokiaľ to bude v správnom formáte.

Takto vyzerá šablóna projektu, na ktorej som pracoval. Cesta ku súboru je len vecou organizácie, ale dôležitou súčasťou je, že súbor má: príponu .xctemplate, súbory ikon a TemplateInfo.plist.

Pri ikonách si môžete vybrať ľubovoľný png a jeho kópiu s príponou @2x.png.

Súbor plist je to čo je podstatné. Vložte všetky súbory, ktoré chcete použiť, do šablóny projektu. Pokiaľ súbor neprepojíte v súbore plist, nezobrazia sa vo vytvorenom projekte. Poradie v priečinku je irelevantné, pretože súbor plist nastaví konečné poradie.

Na zobrazenie súboru plist používam Atom, pretože zvýrazňuje syntax XML súboru. Ak vám vyhovuje používanie iného nástroja, je to na vás.

<?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.Xcode3.ProjectTemplateUnitKind</string>
 <key>Identifier</key>
 <string>com.apple.dt.unit.singleViewApplication</string>
 <key>Ancestors</key>
 <array>
	<string>com.apple.dt.unit.applicationBase</string>
 	<string>com.apple.dt.unit.iosBase</string>
 </array>
 <key>Concrete</key>
 <true/>
 <key>Definitions</key>
 <dict>
  <key>Application/AppDelegate.swift</key>
  <dict>
   <key>Path</key>
   <string>Application/AppDelegate.swift</string>
   <key>Group</key>
   <array>
    <string>Application</string>
   </array>
  </dict>
  <key>Models/Response/SampleResponse.swift</key>
  <dict>
   <key>Path</key>
   <string>Models/Response/SampleResponse.swift</string>
   <key>Group</key>
   <array>
    <string>Models</string>
    <string>Response</string>
   </array>
  </dict>
  <key>Models/Request/SampleRequest.swift</key>
  <dict>
   <key>Path</key>
   <string>Models/Request/SampleRequest.swift</string>
   <key>Group</key>
   <array>
    <string>Models</string>
    <string>Request</string>
   </array>
  </dict>
  <key>Managers/Dependency/DependencyContainer.swift</key>
  <dict>
   <key>Path</key>
   <string>Managers/Dependency/DependencyContainer.swift</string>
   <key>Group</key>
   <array>
    <string>Managers</string>
    <string>Dependency</string>
   </array>
  </dict>
  <key>Managers/Request/RequestManager.swift</key>
  <dict>
   <key>Path</key>
   <string>Managers/Request/RequestManager.swift</string>
   <key>Group</key>
   <array>
    <string>Managers</string>
    <string>Request</string>
   </array>
  </dict>
  <key>Managers/Request/RequestManagerType.swift</key>
  <dict>
   <key>Path</key>
   <string>Managers/Request/RequestManagerType.swift</string>
   <key>Group</key>
   <array>
    <string>Managers</string>
    <string>Request</string>
   </array>
  </dict>
  <key>Managers/Request/Endpoint.swift</key>
  <dict>
   <key>Path</key>
   <string>Managers/Request/Endpoint.swift</string>
   <key>Group</key>
   <array>
    <string>Managers</string>
    <string>Request</string>
   </array>
  </dict>
  <key>Coordinators/Coordinator.swift</key>
  <dict>
   <key>Path</key>
   <string>Coordinators/Coordinator.swift</string>
   <key>Group</key>
   <string>Coordinators</string>
  </dict>
  <key>Coordinators/AppCoordinator.swift</key>
  <dict>
   <key>Path</key>
   <string>Coordinators/AppCoordinator.swift</string>
   <key>Group</key>
   <string>Coordinators</string>
  </dict>
  <key>Screens/SampleController/SampleViewController.swift</key>
  <dict>
   <key>Path</key>
  <string>Screens/SampleController/SampleViewController.swift</string>
   <key>Group</key>
   <array>
    <string>Screens</string>
    <string>SampleController</string>
   </array>
  </dict>
  <key>Views/SampleView/SampleView.swift</key>
  <dict>
   <key>Path</key>
   <string>Views/SampleView/SampleView.swift</string>
   <key>Group</key>
   <array>
    <string>Views</string>
    <string>SampleView</string>
   </array>
  </dict>
  <key>Resources/Assets.xcassets</key>
  <dict>
   <key>Path</key>
   <string>Resources/Assets.xcassets</string>
   <key>Group</key>
   <array>
    <string>Resources</string>
   </array>
  </dict>
  <key>Resources/Colors.xcassets</key>
  <dict>
   <key>Path</key>
   <string>Resources/Colors.xcassets</string>
   <key>Group</key>
   <array>
    <string>Resources</string>
   </array>
  </dict>
 </dict>
 <key>Nodes</key>
 <array>
  <string>Application/AppDelegate.swift</string>
  <string>Models/Response/SampleResponse.swift</string>
  <string>Models/Request/SampleRequest.swift</string>
  <string>Managers/Dependency/DependencyContainer.swift</string>
  <string>Managers/Request/RequestManager.swift</string>
  <string>Managers/Request/RequestManagerType.swift</string>
  <string>Managers/Request/Endpoint.swift</string>
  <string>Coordinators/Coordinator.swift</string>
  <string>Coordinators/AppCoordinator.swift</string>
  <string>Screens/SampleController/SampleViewController.swift</string>
  <string>Views/SampleView/SampleView.swift</string>
  <string>Resources/Colors.xcassets</string>
  <string>Resources/Assets.xcassets</string>
  <string>Info.plist:UIMainStoryboardFile</string>
  <string>Info.plist:UIApplicationSceneManifest:UISceneStoryboardFile</string>
 </array>
 </dict>

Všetko až do definície môžete skopírovať/prilepiť, pretože je to pre našu jednoduchú šablónu statické. Bez ohľadu na to vám však poskytnem rýchle zhrnutie:

Kind: uvádza, že je to šablóna projektu a nie šablóna súboru, ktorá je jedinou ďalšou možnosťou.

Identifier: Toto je identifikátor šablóny, ktorý by mal byť jedinečný a je možné naň odkazovať z iných šablón na jeho import.

Concrete: Uvádza, či by táto šablóna mala byť viditeľná. Môžete ho skryť, ak ho použijete iba ako súčasť iných šablón.

Ancestors: Uvádza ID iných šablón, z ktorých táto šablóna dedí.

Definitions: Uvádza súbory, na ktoré sa budete odkazovať neskôr v nodes. Do definícií musíte vložiť všetky súbory, ktoré chcete vo svojich projektoch vidieť. Path v definícii <dict> uvádza, kde sa požadovaný súbor nachádza vzhľadom na váš adresár šablón. Group v definícii <dict> uvádza, aká bude hierarchia priečinkov po vytvorení nového projektu pomocou šablóny.

Nodes: Udáva, ktoré súbory šablóna vytvorí. Ak nie je uvedené inak, poradie, v ktorom ich napíšete, bude poradie, v akom bude vaša hierarchia súborov.

Kliknite na uložiť a pokúste sa vytvoriť priečinok pomocou tejto šablóny. Vaše vlastné šablóny by ste mali vidieť úplne dole v možnostiach vytvárania projektu v samostatnej sekcii (Pomenovanie odráža vašu štruktúru priečinkov po priečinku Templates folder)

Váš nový projekt môže vyzerať takto:

Nami používané šablóny nájdete na Github.

Andrej JaššoiOs Developer