Merhabalar bu yazımda Swift dilinin yeni sürümünde karşılaşacağımız @propertyWrapper yapısı nedir ve nasıl kullanırız sorusuna yanıt bulacağız.
Swift 5.1 ile eklenen bu yapı ile değişkenlere ön ek olarak eklediğiniz @property tanımları ile değişkeni bir fonksiyona sokmadan yaratılma anında istediğiniz temizleme, ekleme vs işlemleri gerçekleştirebiliyorsunuz. SwiftUI ile birlikte aktif kullanılan yapı bizlere oldukça okunaklı ve etkileşimli yapılar oluşturmamızı sağlayacak.
Aşağıda yazdığım örnekler ile kullanımını görelim.
@propertyWrapper struct ClearStr { private(set) var value: String = "" var wrapper: String { get { value } set { value = newValue.replacingOccurrences(of: ".", with: "") } } init(initialValue: String) { self.wrapper = initialValue } } struct CustomView:View { @ClearStr var name = "..Ken.an.." var body: some View { Text(name) .background(Color.orange) .cornerRadius(5) .frame(width: 150, height: 150, alignment: .center) } }
Yukardaki örnekte gördüğünüz gibi @ClearStr olarak tanımlanan değişkenler otomatik olarak nokta işaretinden temizlenmiş bir şekilde kullanılabilinir. Bu gibi yapıları oluşturacağınız değişkenlerde kullanmanız oldukça yararlı olacaktır.
Diğer bir örnekte UserDefaults yapısını bu şekilde oldukça verimli kullanabiliriz.
@propertyWrapper struct UserDefault<T> { let key: String let defaultValue: T init(_ key: String, defaultValue: T) { self.key = key self.defaultValue = defaultValue } var value: T { get { UserDefaults.standard.object(forKey: key) as? T ?? defaultValue } set { UserDefaults.standard.set(newValue, forKey: key) } } }
@UserDefault("login", defaultValue: false) var isLogin: Bool
Burada isLogin değişkenine değeri set veya get ettiğimiz zaman UserDefaults ile belirttiğimiz key üzerinden işlemleri gerçekleştirmiş oluruz.
İlk Yorumu Siz Yapın