Swift'te Property Wrappers - 1


Görsel Referansı


Herkese selamlar. Bu yazıda SwiftUI'da property wrappers'tan bahsediyor olacağım. UIKit içerisindeki property wrappers konusunu ise biraz daha farklı bir konu olduğu için bu yazının konusu değil.


Property Wrappers Nedir?


Neredeyse hemen her mobil uygulama, veri gösterme işlemini gerçekleştirir. Fakat göstermek istediğimiz veri ile View, bu veriyle nasıl iletişim kurar ve bu veriyi View üzerinde nasıl gösterir? SwiftUI özelinde bu soruya, property wrappers kullanarak çözüm üretiyoruz. Yani veriyi orijinal veya değiştirilmiş bir halde kullanıcıya gösterebiliyoruz. Property wrappers konusu, kodu daha okunabilir ve kolay yazabilmek amacıyla oluşturulmuştur. Yazının sonlarına doğru vereceğim örnek kod ile bu farkı rahatça görebileceksiniz.


Property Wrappers Neden Kullanılır?


iOS programlamada kullanılan ve SwiftUI’dan daha önce çıkmış olan UIKit’te, geliştirme yaparken genel olarak class yapısı kullanırken, SwiftUI’da geliştirme yaparken genel olarak struct yapısı kullanılır. Bu iki yapı birbirine benzese de aralarındaki birkaç farktan ötürü SwiftUI içerisinde property wrappers kullanılır.


Aşağıdaki kodda UIKit’i, yani class yapısını kullanarak “infoString” adlı property'nin değerini değiştirerek “infoLabel” adlı UILabel içerisinde gösteriyorum.


import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var infoLabel: UILabel!
    var infoString : String?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        infoLabel.text = "Property Wrappers"
    }

    @IBAction func buttonClicked(_ sender: UIButton) {
        infoString = "Giray"
        infoLabel.text = infoString
    }
    
}

Fakat struct yapısını, yani SwiftUI’ı kullanarak bu değeri UIKit‘te yaptığım gibi değiştiremiyorum.