Swift Codable: Encodable - Decodable

Merhaba bugün Swift’de URLSession Network İşlemleri'nde JSON olarak gelen datayı custom Swift “struct” yada “class”lara map’leme işlemine yakından göz atacağız.


Swift’de “Codable” JSON’ları bir nesneye, nesneleri ise JSON yapılarına dönüştürmemize yardımcı olan bir protokoldür. Kullanacağımız yapıların (struct) veya sınıfların (class) bu işlemleri gerçekleştirebilmek için bu protokolü uygulaması (implement etmesi) gerekir.


Görsel Referansı


İlk olarak JSON kavramından bahsetmek gerekirse JSON (JavaScript Object Notation) bizler tarafından okunması kolaylaştırılmış, verileri depolamak ve taşımak için bir formattır. Ayrıca restful çağrımız sonrasında bize dönen response(yanıt) JSON formatında olabilir.


Yapacağımız örnekte bir yapı oluşturalım. İlk öncelikle bu yapıdan bir nesne oluşturarak bilgilerini “encode” edip bir JSON’a dönüştürelim. Ardından da oluşan bu JSON’ı “decode” ederek bilgileri başka bir nesneye aktaralım.


İşlemlerimize başlamadan önce “encode” ve “decode” kavramlarına biraz yakından bakalım.


Encode Nedir?

  • Çoğu iOS uygulamasında verileri kaydetmemiz ve ağ üzerinden göndermemiz gerekir. Ancak bunu yapmadan önce, verileri “encoding” veyaserialization” adı verilen bir işlemle uygun bir formata dönüştürmeniz gerekir.


Görsel Referansı


Decode Nedir?

  • Ayrıca uygulamamızda kullanmadan önce ağ üzerinden aldığımız verileri Swift kodumuzda kullanılabilir bir hale dönüştürmeniz gerekir. Bu ters işlem, “decoding” veya “deserialization” olarak adlandırılır.


Görsel Referansı

 

Hazırsanız başlayalım.


İlk olarak basit bir struct yapısı oluşturalım. Struct’ımız içinde String türünde, “name” ve “date” adında iki adet değişken oluşturalım.