SwiftData: Data Persistence Terbaru Apple!

SwiftData: Data Persistence Terbaru Apple!

Pernahkah kamu bertanya-tanya bagaimana aplikasi di ponselmu bisa menyimpan dan mengakses data, seperti catatan, preferensi pengguna, atau informasi penting lainnya? Ada berbagai cara yang biasa digunakan oleh pengembang aplikasi, terutama dalam pengembangan aplikasi iOS, seperti User Default, Core Data, File System, SQLite, Keychain, Firebase Database, atau bahkan Realm. Semua cara tersebut bisa dikatakan dengan data persistence.

Namun, tahukah kamu bahwa pada WWDC 2023 lalu, Apple mengumumkan data persistence terbarunya? Jawabannya adalah SwiftData, data persistence baru yang didesain agar lebih mudah ditulis secara deklaratif dengan SwiftUI. Wah, menarik, bukan? Yuk, kita bahas lebih detailnya.

SwiftData

💻 Mulai Belajar Pemrograman

Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.

Daftar Sekarang

Data Persistence

Sebelum membahas apa itu SwiftData, apakah kamu sudah familier dengan istilah data persistence? Istilah ini diambil sebagai gambaran ketika aplikasi memiliki kemampuan untuk menyimpan data sehingga ia dapat diambil dan digunakan kemudian, meski aplikasi dibuka atau ditutup. Oleh karena itu, data persistence memastikan data tetap utuh dan bisa digunakan di kemudian waktu.

Lalu, sebenarnya apa perbedaan dari masing-masing data persistence yang ada dalam pengembangan aplikasi iOS? Mari kita bahas terlebih dahulu, ya, perbedaannya.

  1. User Defaults: Untuk menyimpan data sederhana seperti pengaturan aplikasi dalam bentuk key-value pairs. Terbatas pada tipe data kecil dan sederhana.
  2. Core Data: Framework yang digunakan untuk mengelola data kompleks dan memiliki fitur object graph management serta data persistence. Cocok untuk aplikasi dengan struktur data yang rumit.
  3. File System: Menyimpan data secara manual dalam bentuk file (misalnya, JSON, plist, gambar) dalam direktori aplikasi. Fleksibel, tetapi tidak otomatis mengelola data seperti Core Data.
  4. SQLite: Database relasional ringan yang memungkinkan kueri SQL. Cocok untuk aplikasi yang memerlukan kontrol penuh atas struktur database dan relasi antar data.
  5. Keychain: Untuk menyimpan data yang sensitif, seperti kata sandi dan token autentikasi dengan keamanan tinggi. Data disimpan secara terenkripsi.
  6. Firebase Database: Solusi real-time database berbasis cloud yang cocok untuk aplikasi dengan kebutuhan sinkronisasi data antar perangkat atau pengguna secara langsung.
  7. Realm: Database mobile dengan performa tinggi dan mudah digunakan, mirip dengan Core Data, tetapi lebih sederhana dan cepat dalam hal kueri serta manajemen data.

Ternyata, banyak metode yang bisa kamu gunakan untuk mengimplementasikan data persistence dalam aplikasi iOS. Tentunya, masing-masing di antaranya memiliki kelebihan dan kekurangan. Kamu bisa menggunakannya sesuai dengan kebutuhan dan kondisi yang ditemui. 

Contohnya, ketika kamu ingin menyimpan informasi yang sensitif, Keychain bisa jadi rekomendasi. Contoh lainnya ketika kamu ingin datamu juga bisa diakses sistem operasi lain, Firebase Database bisa dipilih.

Core Data sebagai Data Persistence Bawaan Xcode

Perlu kamu tahu juga bahwa mengimplementasikan berbagai metode data persistence mudah dilakukan, terutama dalam pengembangan aplikasi berbasis UIKit. Biasanya kamu hanya perlu membuat sebuah class terpisah untuk mengatur mekanisme data disimpan sehingga bisa digunakan kembali. Contohnya dalam Core Data sebagai data persistence bawaan dalam Xcode.

 

CoreData

Sepertinya cukup mudah untuk mengimplementasikan sebuah Core Data dalam aplikasi UIKit. Namun, perlu kamu tahu dulu bahwa setiap data persistence punya cara implementasinya sendiri. Contohnya adalah Core Data memiliki Core Data Stack yang berisi kumpulan objek framework sebagai bagian dari inisialisasi Core Data.

CoreDataStack

Kamu perlu memanfaatkan beberapa framework pendukung tersebut agar Core Data dapat berfungsi dengan optimal. Kompleksitasnya meningkat karena Core Data didesain dengan paradigma imperative programming

Terlebih ketika menggunakan SwiftUI, kamu harus menyesuaikan beberapa bagian kode agar terintegrasi dengan SwiftUI, yang berbasis declarative programming, berjalan dengan baik. Alhasil, banyak kendala yang akan kamu alami ketika menggunakan Core Data dalam dalam aplikasi SwiftUI. Bahkan, tak banyak developer yang beralih dari Core Data ke data persistence lain, seperti Realm. Oleh karena itu, Apple mengumumkan data persistence yang cocok untuk SwiftUI, yakni SwiftData.

SwiftData sebagai Data Persistence Terbaru Apple!

Setelah para developer Apple struggle dengan implementasi Core Data di SwiftUI, Apple mengumumkan SwiftData pada WWDC 2023. SwiftData adalah data persistence yang memudahkan Anda dalam pengembangan aplikasi iOS, terutama SwiftUI karena ia menggunakan kode deklaratif. Anda bisa melakukan query dan filtering menggunakan kode Swift dan bisa dengan mudah mengintegrasikannya dengan SwiftUI.

Berikut adalah fitur-fitur dari SwiftData.

Model dengan Swift

Kamu bisa mengubah model Swift menjadi model dalam SwiftData. Caranya dengan menambahkan @Model di awal penulisan kelas model tersebut. Simpel, bukan?

Persistensi Otomatis

Ketika kamu menggunakan SwiftData, aplikasi akan mengambil object dari database ketika dibutuhkan dan menyimpannya secara otomatis tanpa perlu framework tambahan.

Kustomisasi Data Store

Dengan protocol DataStore, SwiftData dapat digunakan dengan berbagai jenis data persistence, contohnya file JSON, tanpa mengubah kode pemodelan SwiftUI dan SwiftData.

Integrasi dengan SwiftUI

Kamu bisa menggunakan @Query dalam tampilan SwiftUI untuk mengambil data dari SwiftData. SwiftData dan SwiftUI dapat bekerja sama untuk memberikan update secara langsung ke View ketika ada perubahan data, tanpa perlu memuat ulang data secara manual.

Sinkronisasi CloudKit

SwiftData mendukung proses penyimpanan data dalam bentuk file menggunakan DocumentGroup dan disinkronkan melalui iCloud Drive, atau menggunakan CloudKit untuk menyinkronkan data antar perangkat.

Kompatibilitas dengan Core Data

Kamu bisa menggunakan Core Data dengan SwiftData secara bersamaan. Hal ini karena SwiftData menggunakan arsitektur penyimpanan yang sama dengan Core Data. Bahkan, Xcode dapat mengonversi model Core Data menjadi kelas untuk digunakan dengan SwiftData. Menarik, bukan?

Membangun Aplikasi Sederhana dengan SwiftData

Setelah berkenalan dengan SwiftData, tentu tidak lengkap rasanya untuk membangun aplikasi iOS dengan SwiftData. Oleh karena itu, mari kita coba membangun aplikasi sederhana yang memanfaatkan SwiftData sebagai data persistence

  1. Pertama, kamu bisa gunakan Xcode atau Swift Playgrounds untuk membangun aplikasi iOS.
    Create Playgrounds

  2. Kemudian, tulis nama aplikasi dan sesuaikan Organization Identifier dengan keinginan kalian. Klik next untuk melanjutkan.
    Create Project
  3. Setelah itu, buat model data yang akan disimpan sebagai Entity dalam SwiftData.

  4. Setelah itu, kita bisa bangun sebuah function untuk menambahkan dan menghapus data dalam ContentView.

  5. Lanjut, kita desain tampilan aplikasi untuk menampilkan daftar buku dan form untuk tambah buku dengan menggunakan SwiftUI.

  6. Setelah itu, kamu bisa sesuaikan bagian MyApp.

  7. Hasilnya seperti ini.
    Aplikasi dengan SwiftData
    Mantap, bukan? Dengan SwiftData, penulisan kode menjadi lebih simpel dan ringkas. Kamu juga lebih mudah mengimplementasikan SwiftData dengan SwiftUI karena fitur integrasinya. Kamu bisa membangun aplikasi dengan alur data yang lebih jelas dan meminimalkan boilerplate code yang biasa ditemui dalam metode data persistence lainnya.

Kamu bisa mengunduh kode dari hal yang sudah kita praktikkan pada tautan berikut.

Kesimpulan

SwiftData hadir sebagai solusi modern yang mempermudah proses penyimpanan data dalam pengembangan aplikasi iOS. Dibandingkan dengan metode data persistence sebelumnya, SwiftData menawarkan pendekatan yang lebih sederhana dan efisien, terutama untuk aplikasi yang menggunakan SwiftUI. 

Dengan dukungan integrasi otomatis, kustomisasi, serta kompatibilitas dengan Core Data, SwiftData memungkinkanmu untuk membangun aplikasi yang lebih robust melalui cara lebih mudah dan deklaratif.

Jika kamu ingin mulai belajar iOS, telah hadir langganan Learning Path baru, iOS Developer di Tokopedia Dicoding. Khusus untuk kamu, dapatkan diskon 70% untuk setiap pembelian paket learning path. Kunjungi dicoding.id/iOS

Mulailah petualangan membangun aplikasi iOS hari ini! Sekian blog kali ini, sampai jumpa bertemu di blog lainnya! Terima kasih.


Belajar Pemrograman Gratis
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.