Swift Enum Kullanarak Data Modelleme

Ata Anıl Turgay
blutv
Published in
2 min readJun 28, 2021

Enumlar kullanıldıkları her dilde önemli avantajlar sağlarlar ancak Swift dili ile beraber enum kullanımı diğer dillerde olmayan çeşitli avantajlar içermektedir.

Bu yazıda işte bu bahsettiğimiz avantajları inceleyeceğiz. Haydi hemen başlayalım!

Yukarıdaki gibi elimizde bir Content model olduğunu düşünelim. Bu model bize servisten gelen dizi, film, belgesel vb. içerikleri modellememizi sağlayan bir struct modeldir. Bu modelde servisten bize dönen içerikler tip olarak değişkenlik göstereceğinden hem dizi hem film hem de belgesel tipleri için içerisinde gerekli parametreler mevcuttur. Peki ama neden dizi içeriği için film parametreleri ya da film içeriği için dizi parametreleri kullanalım ki? Örneğin seasonNo, episodeNo parametreleri film içeriği için anlamsızdır. İşte bu anlamsız yani gereksiz parametreleri ayırt etmek için enum kullanarak modelleme yapacağız.

Oluşturduğumuz bu Content enum’ı içerisinde üç case bulunuyor. Bu caseleri içeriklerin dizi, film ve belgesel olabileceklerini düşünerek yarattık ve her biri için sadece gerekli olan parametreleri belirledik. Artık gereksiz bir parametre kullanımı olmayacak. Gelin bir content array oluşturalım ve konsolda içerisindekileri yazdıralım!

Sırasıyla bir dizi, bir film ve bir belgesel oluşturuyoruz ve bunları displayContents fonksiyonuna veriyoruz. Yazdığımız bu fonksiyon bizim için forEach içerisinde dönerek her bir content için switch case let kontrolüne girer, bu case let kullanımı her bir type için yani dizi, film ve belgesel için birer tuple döndürür. Bu tuple içerisinde kullanmak istemediğimiz parametreleri _ ifadesi ile yok sayıyoruz. print fonksiyonuna içeriklerin detayında görmek istediğimiz parametreleri ekleyerek konsola yazdırma işlemini gerçekleştiriyoruz.

Yukarıdaki kod bloğunu ViewController içerisindeki viewDidLoad methoduna ekleyerek projeyi run edebilirsiniz. Ya da bir playground açarak da deneyebilirsiniz.

series detail -> name: Breaking Bad - seasons: 5 - episodes: 62 - average runtime: 49 min - cast: Bryan Cranston, Aaron Paul, Anna Gunn - director: Vince Gilliganmovie detail -> name: Interstellar - release date: 2014 - runtime: 169 min - cast: Matthew McConaughey, Anne Hathaway, Jessica Chastain - director: Christopher Nolandocumentary detail -> name: The Last Dance - description: Charting the rise of the 1990's Chicago Bulls, led by Michael Jordan, one of the most notable dynasties in sports history. - director: Jason Hehir

Konsolda yukarıdaki şekilde logu görüyoruz. Dizi için isim, sezon sayısı, bölüm sayısı, ortalama bölüm süresi, cast ve yönetmen yazdırdık. Film için isim, yapım yılı, film süresi, cast ve yönetmen yazdırdık. Belgesel için isim, açıklama ve yönetmen yazdırdık. Böylece her bir içerik tipi için farklı modellemeler yaparak kullanmak istediğimiz kadar data kullandık. Gereksiz bir data kullanmadık ve karışıklığı minimum düzeyde tuttuk.

Bu yazıda enum kullanarak data modellemeyi inceledik.

Herkese keyifli araştırmalar ve okumalar…

--

--