İçeriğe geç

Swift 5.1 ile @propertyWrapper kullanımı

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.

Kategori:SwiftSwift 5

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Copyright © 2022 Kenan Atmaca