{"id":1029,"date":"2018-03-08T12:03:55","date_gmt":"2018-03-08T09:03:55","guid":{"rendered":"https:\/\/ratel.com.tr\/?p=1029"},"modified":"2018-05-24T13:01:01","modified_gmt":"2018-05-24T10:01:01","slug":"xcode-icin-proje-sablonu-hazirlama","status":"publish","type":"post","link":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/","title":{"rendered":"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama"},"content":{"rendered":"<p>Bu yaz\u0131da amac\u0131m\u0131z Xcode \u00fczerinde <strong>Single View App<\/strong> gibi, kendi proje \u015fablonumuzu haz\u0131rlamakt\u0131r. G\u00fcn\u00fcm\u00fczde projelerin kodlanmas\u0131 ve \u00fcr\u00fcne d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi \u00e7ok \u00f6nemlidir. Fakat onun kadar \u00f6nemli di\u011fer bir nokta, projeye ilk ad\u0131m at\u0131l\u0131rken uygulayaca\u011f\u0131n\u0131z mimaridir. Genellikle bu k\u0131s\u0131m kodu yazacak yaz\u0131l\u0131mc\u0131n\u0131n insiyatifine b\u0131rak\u0131l\u0131r. Durum b\u00f6yle olunca bak\u0131m\u0131 zor, g\u00fcncellenmesi daha zor projeler ortaya \u00e7\u0131kmaktad\u0131r.<\/p>\n<p>Yaz\u0131l\u0131m projelerinde her \u00fcr\u00fcn, farkl\u0131 bir mimari kullanarak geli\u015ftirilebilir (MVP, MVVM, MVC, VIPER vb.). Se\u00e7ilen mimari, projenin kapsam\u0131 ve ihtiya\u00e7lar\u0131 ile ilgili bir konudur. Fakat her projeye ba\u015fland\u0131\u011f\u0131nda yeni proje olu\u015fturulmas\u0131, isimlendirme kurallar\u0131, dosya yap\u0131s\u0131 vb. ne kadar dikkat edilirse edilsin farkl\u0131l\u0131k g\u00f6stermektedir. Durum b\u00f6yle olunca proje ile ilgili yeni bir istek geldi\u011finde neyi nerde bulaca\u011f\u0131n\u0131z biraz karma\u015f\u0131k bir hal alabilmektedir. Bu y\u00fczden proje olu\u015fturma a\u015famas\u0131nda harcad\u0131\u011f\u0131n\u0131z zaman\u0131 en aza indirmek i\u00e7in Xcode \u00fczerinde mimarilere uygun ba\u015flang\u0131\u00e7 \u015fablonlar\u0131 olu\u015fturabilirsiniz. Bu sayede t\u00fcm projeleriniz belirli bir yap\u0131da devam eder ve zamandan da tasarruf sa\u011flam\u0131\u015f olursunuz. Laf\u0131 \u00e7ok uzatt\u0131m, art\u0131k Xcode i\u00e7in bir proje \u015fablonu nas\u0131l olu\u015fturulur onu inceleyelim.<\/p>\n<h3>1. Xcode Proje \u015eablonunun Olu\u015fturulmas\u0131<\/h3>\n<p>\u00d6ncelikle \u015fablon kavram\u0131, proje olu\u015ftururken\u00a0<strong>&#8220;Create a new Xcode project&#8221;<\/strong>\u00a0se\u00e7ene\u011fini se\u00e7tikten sonra kar\u015f\u0131m\u0131za gelen <strong>Single View App, Game, Tabbed App vb<\/strong>. yap\u0131lard\u0131r. Xcode i\u00e7erisinde varsay\u0131lan olarak gelen proje \u015fablonlar\u0131,\u00a0<strong>&#8220;\/Applications \/Xcode.app \/Contents \/Developer \/Platforms \/iPhoneOS.platform \/developer \/Library \/Xcode \/Templates \/Project\/ Templates \/iOS\/Application&#8221;\u00a0<\/strong>dizini alt\u0131nda bulunmaktad\u0131r. Bu dizin alt\u0131nda bulunan <strong>Single View App.xctemplate\u00a0<\/strong>bizim Swift projelerimizde kulland\u0131\u011f\u0131m\u0131z temel proje \u015fablonudur. Ben bu dizinde bulunan\u00a0<strong>Single View App.xctemplate <\/strong>dosyas\u0131n\u0131\u00a0kopyalay\u0131p g\u00fcncelleyerek devam edece\u011fim. Siz isterseniz bu dizine yeni bir dosya olu\u015fturarak buna devam edebilirsiniz. Fakat yeni olu\u015fturdu\u011funuz dosyan\u0131n sonunun <strong>.xctemplate<\/strong> ile bitti\u011finden emin olmal\u0131s\u0131n\u0131z.<\/p>\n<p><strong>Single View App.xctemplate <\/strong>i\u00e7erisine bakacak olursan\u0131z, a\u015fa\u011f\u0131daki dosyalar\u0131 g\u00f6receksiniz. Bu dosyalardan <strong>TemplateIcon<\/strong> ve <strong>TemplateInfo<\/strong> dosyalar\u0131 \u015fablon i\u00e7in olmas\u0131 gereken dosyalard\u0131r.<\/p>\n<ul>\n<li>Main.storyboard<\/li>\n<li>TemplateIcon.png<\/li>\n<li>TemplateIcon@2x.png<\/li>\n<li>TemplateInfo.plist<\/li>\n<\/ul>\n<p><strong>Main.storyboard<\/strong> uygulaman\u0131n g\u00f6r\u00fcn\u00fcm ekran\u0131, <strong>TemplateIcon<\/strong> ise \u015fablonunuzun resmidir. Burada \u00f6nemli olan <strong>TemplateInfo.plist<\/strong> dosyas\u0131d\u0131r. T\u00fcm i\u015flemleri bunun i\u00e7erisinde yapaca\u011f\u0131z. <strong>TemplateInfo.plist<\/strong> i\u00e7erisindeki <strong>Identifier<\/strong> alan\u0131 benzersiz bir alan olmal\u0131d\u0131r. Bu alan\u0131 de\u011fi\u015ftirdikten sonra Xcode&#8217;u yeniden \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda art\u0131k olu\u015fturdu\u011fumuz \u015fablon ekrana gelecektir. Dosya yap\u0131m\u0131z a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1063 size-full aligncenter\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.1-1-1.png\" alt=\"\" width=\"450\" height=\"471\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.1-1-1.png 450w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.1-1-1-287x300.png 287w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1031\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.2.png\" alt=\"Xcode Simple View App Template\" width=\"711\" height=\"269\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.2.png 711w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.2-300x114.png 300w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1032\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.3.png\" alt=\"Xcode TemplateInfo.plist identifier\" width=\"798\" height=\"283\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.3.png 798w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.3-300x106.png 300w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.3-768x272.png 768w\" sizes=\"auto, (max-width: 798px) 100vw, 798px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1033\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.4.png\" alt=\"Xcode choose custom template\" width=\"731\" height=\"529\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.4.png 731w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/1.4-300x217.png 300w\" sizes=\"auto, (max-width: 731px) 100vw, 731px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Resimlerde de g\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u00fczere, olu\u015fturdu\u011fumuz &#8220;Ratel Project Template&#8221; proje \u015fablonu ba\u015far\u0131l\u0131 bir \u015fekilde Xcode i\u00e7erisine gelmi\u015ftir.<\/p>\n<h3>2. Proje \u015eablonuna Mimarinin Dahil Edilmesi<\/h3>\n<p>Bu b\u00f6l\u00fcmde mimarinize uygun olu\u015fturmu\u015f oldu\u011funuz basit Xcode dosyalar\u0131n\u0131 sisteme dahil edece\u011fiz. Ben basit bir MVC mimarisine uygun yap\u0131 olu\u015fturdum. Siz isterseniz kendinize g\u00f6re farkl\u0131 mimariler kurabilirsiniz.<\/p>\n<p>A\u015fa\u011f\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi basit bir i\u00e7i bo\u015f Xcode projesi olu\u015fturdum. \u015eimdi olu\u015fturdu\u011fum proje dosyas\u0131na gidiyorum ve oradaki Models, Views, Controllers ve Services dosyalar\u0131n\u0131 kopyalay\u0131p olu\u015fturdu\u011fumuz .<strong>xctemplate<\/strong> dosyas\u0131 i\u00e7erisine yap\u0131\u015ft\u0131r\u0131yorum. Art\u0131k son ayarlamalar\u0131 <strong>TemplateInfo.plist<\/strong> i\u00e7erisinde yapaca\u011f\u0131z.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1034 size-full aligncenter\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/2.1.png\" alt=\"Xcode base MVC template\" width=\"304\" height=\"575\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/2.1.png 304w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/2.1-159x300.png 159w\" sizes=\"auto, (max-width: 304px) 100vw, 304px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3><\/h3>\n<h3>3. TemplateInfo.plist Dosyas\u0131n\u0131n D\u00fczenlenmesi<\/h3>\n<p><b>TemplateInfo.plist <\/b>dosyas\u0131n\u0131 a\u00e7\u0131yoruz.<b>\u00a0Options &gt; Item 0 &gt; Units &gt; Swift &gt; Nodes <\/b>alt\u0131na her dosya i\u00e7in yeni bir\u00a0<b>Item(String)\u00a0<\/b>olu\u015fturup,<b>\u00a0<\/b>kopyalad\u0131\u011f\u0131m\u0131z dosyalar\u0131, yolu ile birlikte <strong>Item<\/strong> de\u011feri olarak ekliyoruz.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1035\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/3.1.png\" alt=\"Xcode TemplateInfo.plist options\" width=\"787\" height=\"334\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/3.1.png 787w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/3.1-300x127.png 300w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/3.1-768x326.png 768w\" sizes=\"auto, (max-width: 787px) 100vw, 787px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Sadece bu \u015fekilde ekleyip b\u0131rak\u0131rsak, Xcode, i\u00e7leri bo\u015f birer dosya olu\u015fturacakt\u0131r. Biz var olan dosyalar\u0131 \u015fablon i\u00e7erisine kopyalamak i\u00e7in <b>Definitions<\/b> alt\u0131na da tan\u0131mlama yapmam\u0131z gerekecektir.<\/p>\n<p><strong>TemplateInfo.plist<\/strong> i\u00e7erisinde bulunan <strong>Definitions\u00a0<\/strong>alt\u0131na\u00a0 dosya yollar\u0131n\u0131 ekliyoruz (Her dosya i\u00e7in ayr\u0131 ayr\u0131 eklenecektir.). Ekledi\u011fimiz de\u011ferlerin ismi <strong>dosya yolu<\/strong> t\u00fcr\u00fc ise <strong>Dictionary<\/strong> olmal\u0131d\u0131r. Ekledi\u011fimiz her dosya yolu alt\u0131na ise <strong>Path(String)<\/strong>, <strong>Group(Array)<\/strong> olacak \u015fekilde iki tane alan ekliyoruz. Burada <strong>Path<\/strong> yine dosya yolu, <strong>Group<\/strong> elemanlar\u0131 ise dosya yoluna giderken atlad\u0131\u011f\u0131m\u0131z dosyalard\u0131r (Dosya k\u0131r\u0131l\u0131mlar\u0131.). A\u015fa\u011f\u0131daki resimle daha iyi anla\u015f\u0131labilir.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1036\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/3.2.png\" alt=\"Xcode TemplateInfo.plist definations\" width=\"753\" height=\"203\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/3.2.png 753w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/3.2-300x81.png 300w\" sizes=\"auto, (max-width: 753px) 100vw, 753px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u0130\u015flemimiz bu kadar. Art\u0131k yeni olu\u015fturdu\u011fumuz \u015fablonu se\u00e7erek olu\u015fturulan t\u00fcm projelere ilgili mimari dosyalar\u0131 otomatik olarak eklenecektir. Fakat se\u00e7meli olarak mod\u00fcl ekleme i\u015flemi i\u00e7in 4. maddeyi okuman\u0131z\u0131 tavsiye ederim.<\/p>\n<h3><\/h3>\n<h3>4. Se\u00e7meli Mod\u00fcl Ekleme<\/h3>\n<p>Bu b\u00f6l\u00fcmde ise Xcode \u00fczerinde proje olu\u015ftururken <strong>Use Core Data<\/strong> gibi checkbox nas\u0131l eklenir ve bu checkbox de\u011ferine g\u00f6re ilgili proje mod\u00fclleri (Login Mod\u00fcl\u00fc, Tutorial Mod\u00fcl\u00fc vb.) projeye nas\u0131l dahil edilir onu g\u00f6sterece\u011fim.<\/p>\n<p>Bunun i\u00e7in <strong>TemplateInfo.plist<\/strong> i\u00e7erindeki <strong>Options<\/strong> alt\u0131na yeni bir <strong>Item<\/strong> ekliyoruz. Ekledi\u011fimiz <strong>Item<\/strong> alt\u0131na <strong>Identifier(String), Name(String), Description(String), Type(String), Default(String), Units(Directory)<\/strong> olacak \u015fekilde yeni elemanlar ekliyoruz. Eklemi\u015f oldu\u011fumuz\u00a0<strong>Units<\/strong> alt\u0131na ise checkbox i\u015faretli ise ve i\u015faretli de\u011fil ise ko\u015fullar\u0131 i\u00e7in iki tane eleman ekliyoruz\u00a0\u00a0<strong>(true, false).<\/strong> Bu b\u00f6l\u00fcm cevaplar sonucunda ne yapt\u0131rmak istedi\u011finize ba\u011fl\u0131 olarak de\u011fi\u015fiklik g\u00f6sterebilmektedir. Ben <strong>checkbox<\/strong> i\u015faretlenmesi durumunda (true), sisteme\u00a0<strong>Login Mod\u00fcl\u00fc<\/strong> ekleyece\u011fim. Bunun i\u00e7in <strong>true<\/strong> de\u011ferinin t\u00fcr\u00fcn\u00fc <strong>Directory<\/strong> olarak belirliyorum. <strong>false<\/strong> se\u00e7ene\u011finde ise bir aksiyon yapmayaca\u011f\u0131m i\u00e7in bu alana istedi\u011finiz de\u011fer verebilirsiniz. <strong>true (Directory)<\/strong> alt\u0131na ise <strong>Nodes (Array)<\/strong> ad\u0131nda yeni bir de\u011fer ekliyoruz. Son olarak bu <strong>Nodes<\/strong> alt\u0131na yapt\u0131rmak istedi\u011fimiz i\u015flemleri <strong>Item<\/strong> olarak ekliyoruz. Ben <strong>Login\/Login.swift<\/strong> s\u0131n\u0131f\u0131n\u0131 eklemek istedi\u011fim i\u00e7in <strong>Item 0 (String)<\/strong> de\u011ferini <strong>Login\/Login.swift<\/strong> olarak belirliyorum. Burada istedi\u011finiz i\u015flemleri yapt\u0131rabilirsiniz. A\u015fa\u011f\u0131daki resimde k\u0131r\u0131l\u0131mlar\u0131 g\u00f6rebilirsiniz.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>NOT : <\/strong>Yukar\u0131daki paragrafta bahsetti\u011fim i\u015flemi yaparsan\u0131z projenize bo\u015f Login.swift ad\u0131nda dosya ekleyecektir. Fakat biz olu\u015fturdu\u011fumuz Login.swift dosyas\u0131n\u0131 projeye eklemek istedi\u011fimiz i\u00e7in 3. maddedeki <strong>Definitions\u00a0<\/strong>alt\u0131na\u00a0\u00a0Login dosyalar\u0131n\u0131 da eklemeliyiz.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1037\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.1.png\" alt=\"Xcode TemplateInfo.plist checkbox\" width=\"794\" height=\"205\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.1.png 794w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.1-300x77.png 300w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.1-768x198.png 768w\" sizes=\"auto, (max-width: 794px) 100vw, 794px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1038\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.2.png\" alt=\"Xcode TemplateInfo.plist definations\" width=\"801\" height=\"193\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.2.png 801w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.2-300x72.png 300w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.2-768x185.png 768w\" sizes=\"auto, (max-width: 801px) 100vw, 801px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Son olarak proje olu\u015fturma ekran\u0131nda a\u015fa\u011f\u0131daki gibi bir checkbox olu\u015facakt\u0131r.\u00a0 Bu checkbox sadece olu\u015fturdu\u011fumuz \u015fablonun se\u00e7ilmesi durumunda g\u00f6r\u00fcnecektir.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1039 aligncenter\" src=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.3.png\" alt=\"Xcode choose options for your new project\" width=\"730\" height=\"523\" srcset=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.3.png 730w, https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/4.3-300x215.png 300w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Burada anlat\u0131lanlar Xcode projesi \u015fablonu olu\u015fturmak i\u00e7in temel i\u015flemlerdir. Di\u011fer TemplateInfo.plist dosyalar\u0131n\u0131 incelerseniz daha detayl\u0131 kullan\u0131mlar ke\u015ffedebilirsiniz. Bu plist dosyas\u0131 sadece kopyalama ve ta\u015f\u0131ma i\u015flemleri yapman\u0131n yan\u0131nda, \u00f6rne\u011fin AppDelegate.swift dosyas\u0131nda istedi\u011finiz alana istedi\u011finiz kod blo\u011funu yazabilme ayr\u0131cal\u0131\u011f\u0131 da sa\u011flamaktad\u0131r.<\/p>\n<p>Bol ke\u015fifler \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131da amac\u0131m\u0131z Xcode \u00fczerinde Single View App gibi, kendi proje \u015fablonumuzu haz\u0131rlamakt\u0131r. G\u00fcn\u00fcm\u00fczde projelerin kodlanmas\u0131 ve \u00fcr\u00fcne d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi \u00e7ok \u00f6nemlidir. Fakat onun kadar \u00f6nemli di\u011fer bir nokta, projeye ilk ad\u0131m at\u0131l\u0131rken uygulayaca\u011f\u0131n\u0131z mimaridir. Genellikle bu k\u0131s\u0131m kodu yazacak yaz\u0131l\u0131mc\u0131n\u0131n insiyatifine b\u0131rak\u0131l\u0131r. Durum b\u00f6yle olunca bak\u0131m\u0131 zor, g\u00fcncellenmesi daha zor projeler ortaya \u00e7\u0131kmaktad\u0131r. Yaz\u0131l\u0131m projelerinde&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1065,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[13,9,11,8],"post_series":[],"class_list":["post-1029","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ios-gelistirme","tag-proje-sablon","tag-swift","tag-tasarim-desenleri","tag-xcode","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama - Ratel<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama - Ratel\" \/>\n<meta property=\"og:description\" content=\"Bu yaz\u0131da amac\u0131m\u0131z Xcode \u00fczerinde Single View App gibi, kendi proje \u015fablonumuzu haz\u0131rlamakt\u0131r. G\u00fcn\u00fcm\u00fczde projelerin kodlanmas\u0131 ve \u00fcr\u00fcne d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi \u00e7ok \u00f6nemlidir. Fakat onun kadar \u00f6nemli di\u011fer bir nokta, projeye ilk ad\u0131m at\u0131l\u0131rken uygulayaca\u011f\u0131n\u0131z mimaridir. Genellikle bu k\u0131s\u0131m kodu yazacak yaz\u0131l\u0131mc\u0131n\u0131n insiyatifine b\u0131rak\u0131l\u0131r. Durum b\u00f6yle olunca bak\u0131m\u0131 zor, g\u00fcncellenmesi daha zor projeler ortaya \u00e7\u0131kmaktad\u0131r. Yaz\u0131l\u0131m projelerinde&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/\" \/>\n<meta property=\"og:site_name\" content=\"Ratel\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-08T09:03:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-05-24T10:01:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/web.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ratel\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ratel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/\"},\"author\":{\"name\":\"Ratel\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#\\\/schema\\\/person\\\/d01ec513d473dc3a8cf853e56d4e4775\"},\"headline\":\"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama\",\"datePublished\":\"2018-03-08T09:03:55+00:00\",\"dateModified\":\"2018-05-24T10:01:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/\"},\"wordCount\":1194,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ratel.com.tr\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/web.png\",\"keywords\":[\"proje \u015fablon\",\"swift\",\"tasar\u0131m desenleri\",\"xcode\"],\"articleSection\":[\"IOS Geli\u015ftirme\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/\",\"url\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/\",\"name\":\"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama - Ratel\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ratel.com.tr\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/web.png\",\"datePublished\":\"2018-03-08T09:03:55+00:00\",\"dateModified\":\"2018-05-24T10:01:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ratel.com.tr\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/web.png\",\"contentUrl\":\"https:\\\/\\\/ratel.com.tr\\\/wp-content\\\/uploads\\\/2018\\\/03\\\/web.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/xcode-icin-proje-sablonu-hazirlama\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#website\",\"url\":\"https:\\\/\\\/ratel.com.tr\\\/\",\"name\":\"Ratel\",\"description\":\"Digital technology developing office focused on mobile and web projects\",\"publisher\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ratel.com.tr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#organization\",\"name\":\"Ratel Bili\u015fim Hizmetleri Ltd \u015eti\",\"url\":\"https:\\\/\\\/ratel.com.tr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ratel.com.tr\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/ratel_logo-white_back_400.png\",\"contentUrl\":\"https:\\\/\\\/ratel.com.tr\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/ratel_logo-white_back_400.png\",\"width\":400,\"height\":400,\"caption\":\"Ratel Bili\u015fim Hizmetleri Ltd \u015eti\"},\"image\":{\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ratel.com.tr\\\/#\\\/schema\\\/person\\\/d01ec513d473dc3a8cf853e56d4e4775\",\"name\":\"Ratel\",\"url\":\"https:\\\/\\\/ratel.com.tr\\\/tr\\\/author\\\/ratel\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama - Ratel","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/","og_locale":"tr_TR","og_type":"article","og_title":"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama - Ratel","og_description":"Bu yaz\u0131da amac\u0131m\u0131z Xcode \u00fczerinde Single View App gibi, kendi proje \u015fablonumuzu haz\u0131rlamakt\u0131r. G\u00fcn\u00fcm\u00fczde projelerin kodlanmas\u0131 ve \u00fcr\u00fcne d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi \u00e7ok \u00f6nemlidir. Fakat onun kadar \u00f6nemli di\u011fer bir nokta, projeye ilk ad\u0131m at\u0131l\u0131rken uygulayaca\u011f\u0131n\u0131z mimaridir. Genellikle bu k\u0131s\u0131m kodu yazacak yaz\u0131l\u0131mc\u0131n\u0131n insiyatifine b\u0131rak\u0131l\u0131r. Durum b\u00f6yle olunca bak\u0131m\u0131 zor, g\u00fcncellenmesi daha zor projeler ortaya \u00e7\u0131kmaktad\u0131r. Yaz\u0131l\u0131m projelerinde&hellip;","og_url":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/","og_site_name":"Ratel","article_published_time":"2018-03-08T09:03:55+00:00","article_modified_time":"2018-05-24T10:01:01+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/web.png","type":"image\/png"}],"author":"Ratel","twitter_misc":{"Yazan:":"Ratel","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#article","isPartOf":{"@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/"},"author":{"name":"Ratel","@id":"https:\/\/ratel.com.tr\/#\/schema\/person\/d01ec513d473dc3a8cf853e56d4e4775"},"headline":"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama","datePublished":"2018-03-08T09:03:55+00:00","dateModified":"2018-05-24T10:01:01+00:00","mainEntityOfPage":{"@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/"},"wordCount":1194,"commentCount":0,"publisher":{"@id":"https:\/\/ratel.com.tr\/#organization"},"image":{"@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#primaryimage"},"thumbnailUrl":"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/web.png","keywords":["proje \u015fablon","swift","tasar\u0131m desenleri","xcode"],"articleSection":["IOS Geli\u015ftirme"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/","url":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/","name":"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama - Ratel","isPartOf":{"@id":"https:\/\/ratel.com.tr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#primaryimage"},"image":{"@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#primaryimage"},"thumbnailUrl":"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/web.png","datePublished":"2018-03-08T09:03:55+00:00","dateModified":"2018-05-24T10:01:01+00:00","breadcrumb":{"@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#primaryimage","url":"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/web.png","contentUrl":"https:\/\/ratel.com.tr\/wp-content\/uploads\/2018\/03\/web.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/ratel.com.tr\/tr\/xcode-icin-proje-sablonu-hazirlama\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ratel.com.tr\/tr\/"},{"@type":"ListItem","position":2,"name":"Xcode i\u00e7in Proje \u015eablonu Haz\u0131rlama"}]},{"@type":"WebSite","@id":"https:\/\/ratel.com.tr\/#website","url":"https:\/\/ratel.com.tr\/","name":"Ratel","description":"Digital technology developing office focused on mobile and web projects","publisher":{"@id":"https:\/\/ratel.com.tr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ratel.com.tr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/ratel.com.tr\/#organization","name":"Ratel Bili\u015fim Hizmetleri Ltd \u015eti","url":"https:\/\/ratel.com.tr\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/ratel.com.tr\/#\/schema\/logo\/image\/","url":"https:\/\/ratel.com.tr\/wp-content\/uploads\/2016\/12\/ratel_logo-white_back_400.png","contentUrl":"https:\/\/ratel.com.tr\/wp-content\/uploads\/2016\/12\/ratel_logo-white_back_400.png","width":400,"height":400,"caption":"Ratel Bili\u015fim Hizmetleri Ltd \u015eti"},"image":{"@id":"https:\/\/ratel.com.tr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/ratel.com.tr\/#\/schema\/person\/d01ec513d473dc3a8cf853e56d4e4775","name":"Ratel","url":"https:\/\/ratel.com.tr\/tr\/author\/ratel\/"}]}},"_links":{"self":[{"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/posts\/1029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/comments?post=1029"}],"version-history":[{"count":1,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/posts\/1029\/revisions"}],"predecessor-version":[{"id":1168,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/posts\/1029\/revisions\/1168"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/media\/1065"}],"wp:attachment":[{"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/media?parent=1029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/categories?post=1029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/tags?post=1029"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/ratel.com.tr\/tr\/wp-json\/wp\/v2\/post_series?post=1029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}