Swift'te Property Wrapper


Property Wrapper nedir?


Property Wrapper bir özelliğin okuma sırasında nasıl saklandığını veya hesaplandığını tanımlayan ve okuma işlemi sırasında istenilen düzenlemeyi sağlayarak hedef çıktıyı vermemize olanak sağlayan ekstra bir katmandır. Özellikle get ve set içinde bulunan tekrarlayan kod kalabalığını ortadan kaldırır. Class, struct ve enumlar da kullanılır.


Görsel Referansı


Property Wrapper'a neden ihtiyaç duyuldu?


Tekrar eden kodları ortadan kaldırmak, kodun yeniden kullanımını kolaylaştırmak ve API'lar üzerinde üst düzey deneyim sağlamak amacı ile geliştirilmiş ve Swift 5.1 ile Apple dünyasında yerini almıştır.



Nasıl Kullanılır?


Nesnenin veya enumun başına @PropertyWrapper ekleyerek tanımlanır ve wrappedValue tanımlamasını zorunlu kılar. WrappedValue bizim get ve set durumunda alacağımız aksiyonları tanımladığımız ana değişkenimizdir. ProjectedValue ise wrappedValue'nin aksine propertyWrapper'in içinde kullandığımız bir datayı saklayabilceğimiz bir değişkendir. ProjectedValue'nin tipi WrappedValue ile tamamen farklı bir tip olabilir.


A - 1


CurrencyFormatter adında bir PropertyWrapper tanımlıyorum ve ardından saklamak istediğim değişkene istediğim düzenlemeleri uyguluyorum. Artık bu değişkeni okumak istediğimde düzenlenilmiş hali ile çıktısını elde ediyorum.


A - 2

Oluşturduğumuz Wrapper'a default değer özelliğine sahip ve bir değer ataması olmadığında bu default değeri döndürecek şekilde tasarladık. Verilen bir stringin içerisinde var olan boşlukları silen bir PropertyWrapper yazmış olduk.


A - 3