Property Observer dalam Swift


Dalam artikel Property Observer dalam Swift ini Kamu akan memecahkan masalah “Bagaimana cara menambahkan observer/pelacak pada properti?”. Misalnya kita ingin melacak kapan properti tersebut dimutasi atau apapun yang terjadi pada properti tersebut.

willSet dan didSet

willSet dipanggil sebelum nilai diset.
didSet dipanggil setelah nilai baru diset ke properti.

Sekarang kita mulai dengan beberapa contoh implementasinya. Silahkan buka Playground Kamu.

Pelacak Level

var myLevel: Int = 80 {
  willSet(newLevel) {
    print("About to change your level to \(newLevel)")
  }
  didSet {
    print("Your level has been changed")
    print("you had \(oldValue) previously. Now you have \(myLevel)")
  }
}

Sekarang kita ubah myGrade.

myLevel = 100
// "About to change your level to 100"
// "Your level has been changed"
// "You had 80 previously. Now you have 100"

Blok willSet dipanggil sebelum myGrade diset ke 100.
Blok didSet berjalan setelahnya. oldValue mengacu pada nilai awal.

Penghitung Langkah

Buat variabel totalSteps. Ketika variabel mendapatkan nilai baru, Kamu dapat memberi tahu user bahwa nilainya telah diubah.

var totalSteps: Int = 20 {
  willSet(newTotalSteps) {
    print("About to set totalSteps to \(newTotalSteps)")
  }
  didSet {
    if totalSteps > oldValue  {
      print("Added \(totalSteps - oldValue) steps")
    }
  }
}
totalSteps = 60
// "About to set totalSteps to 60"
// "Added 20 steps"

Aplikasi

Kamu dapat memberi tahu user atau mengubah warna background setelah user berhasil masuk ke aplikasi.

var userLoginInfo: Bool = false {
  willSet(newValue) {
    print("The user has tried something")
  }
  didSet {
    if userLoginInfo {
      print("The user has switched from \(oldValue) to \(userLoginInfo)")
      // Backgroud color
      // Animation
      // Pop Up
      // All kinds of stuff
  }
 }
}

userLoginInfo = true
// The user has tried something
// The user has switched from false to true
userLoginInfo = true
// The user has tried something
// The user has switched from true to true

Computed Property memiliki kemiripan dengan Computed Property yaitu selalu mengkalkulasi meskipun nilai yang ditetapkan tidak berubah. Kemudian perbedaannya adalah willSet dan didSet tidak akan dipanggil ketika Kamu menginisialisasi properti tersebut.

So… Tujuan menggunakan property obeserver tidak hanya untuk menulis lebih sedikit kode tetapi juga untuk memberikan kode yang lebih readable melalui kata kunci yang berbeda. Kamu tidak lagi harus membuat fungsi yang tidak perlu diisi dengan switch atau pernyataan else-if lainnya yang tidak dibutuhkan.

Semoga bermanfaat.

0 0 votes
Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

0
Would love your thoughts, please comment.x
()
x