Mengenal property wrappers yang umum digunakan di SwiftUI

Kevin Hermawan
Hyperjump Tech
Published in
3 min readMar 10, 2021

Penjelasan singkat dan studi kasus penggunaan beberapa property wrappers yang umum digunakan di SwiftUI

SwiftUI diperkenalkan oleh Apple pada acara WWDC 2019 silam sebagai alternatif dari UIKit untuk membangun sebuah aplikasi yang modern dan cepat. Beberapa tahun belakangan ini SwiftUI semakin populer karena Apple sudah berkerja keras untuk melakukan optimasi pada SwiftUI itu sendiri yang mana ini menjadi sebuah keuntungan untuk kita sebagai pengembang aplikasi untuk dapat meciptakan aplikasi pada platform Apple dengan mudah dan cepat.

Ada beberapa hal penting yang harus kamu pelajari ketika memulai untuk mengembangkan aplikasi dengan SwiftUI. Salah satunya adalah property wrappers.

Apa itu property wrapper?

Property wrapper adalah fitur yang diperkenalkan pada bahasa pemrograman Swift di versi 5.1 yang memungkinkan kita untuk menaruh sebuah logika langsung pada property yang kita deklarasikan. Salah satu keuntungan dari property wrapper ini membuat kode yang kita tulis terlihat lebih rapi dan mudah untuk digunakan kembali (reusable).

Property wrappers umum di SwiftUI

1. @State

@State memungkinkan kita untuk mengubah value dari property yang sudah di-define di dalam sebuah struct. Mengapa @State ini diperlukan? Perlu diingat bahwa property di dalam struct pada dasarnya tidak dapat diubah karena struct adalah value-type.

Diperlukan @State untuk dapat mengubah value pada sebuah property di dalam struct

Saat kita mendeklarasikan @State sebelum property, kita secara efektif memindahkan penyimpanannya dari struct ke shared storage yang dikelola oleh SwiftUI. Ini memungkinkan SwiftUI untuk dapat menghancurkan dan membuat ulang struct kapan pun diperlukan tanpa kehilangan state yang disimpannya. — Hacking with Swift

2. @Binding

Saat aplikasi sudah berkembang, terkadang kita perlu membagi view menjadi beberapa bagian view kecil, tujuannya adalah agar kode mudah dibaca dan dapat digunakan kembali. Namun terkadang view yang sudah kita bagi mempunyai ketergantungan pada parent view-nya, disinilah @Binding diperlukan untuk mempertahankan behavior dan value dari parent view seperti pada gambar dibawah ini.

Diperlukan @Binding untuk mendapatkan value dan memodifikasi value pada parent view

3. @Environment

Digunakan untuk mengakses environment yang ada di SwiftUI, pada kasus ini saya ingin mendapatkan color scheme yang digunakan device saat ini, caranya dengan menggunakan environment seperti gambar dibawah ini.

Penggunaan @Environment untuk mendapatkan colorScheme

Penutup

Sebenarnya masih banyak lagi property wrappers yang tersedia di SwiftUI yang belum sempat saya bahas disini, semoga nanti bisa dibahas di lain waktu, terima kasih! 😁

Hyperjump is an open-source-first company providing engineering excellence service. We aim to build and commercialize open-source tools to help companies streamline, simplify, and secure the most important aspects of its modern DevOps practices.

--

--