Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK

Memulai dengan JSONModel

by
Read Time:11 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Muhammad Hakim Almadani (you can also view the original English article)

Apakah JSONModel?

Perangkat iOS kami terhubung ke internet sebagian besar waktu dan, tentu saja, sebagian besar aplikasi pada perangkat kami menyambung ke server untuk Ambil ini atau itu sepotong data setiap sekarang dan lagi.

Beberapa aplikasi hanya mengkonsumsi sedikit data, hanya mengambil berita terbaru setiap jam atau lebih. Aplikasi lain banyak berinteraksi dengan layanan backend sementara pengguna menelusuri pakan sosial mereka, membaca melalui posting dan upload foto.

Hari-hari bahwa setiap layanan web berbicara XML sudah lama berlalu. Saat ini, kebanyakan aplikasi berkomunikasi dengan layanan web menggunakan JSON. Jika Anda berencana untuk membuat sebuah aplikasi mobile yang berbicara kepada backend terpencil, kemungkinannya adalah bahwa Anda akan perlu untuk dapat mengirim dan menerima JSON.

JSONModel adalah open source perpustakaan ditulis di Objective-C, yang akan membantu Anda mengambil JSON dari sebuah server, mengurainya, dan menginisialisasi kelas model Anda dengan data. Ini juga memvalidasi JSON data, cascades palung bersarang model, dan banyak lagi.

"Tapi tunggu!" Anda mungkin berpikir "Aku sudah menulis sebuah aplikasi iPhone yang mengambil beberapa JSON dan menunjukkan hal itu di layar. Itu cukup mudah!"

Yah, itu sebagian benar. NSJSONSerialization telah tersedia sejak iOS 5, jadi memang cukup mudah untuk mengkonversi respons JSON ke objek NSDictionary. Ini bekerja baik untuk aplikasi sederhana, tapi percayalah ketika saya mengatakan bahwa ini bukan ide yang baik untuk aplikasi yang kompleks dengan model data yang kompleks. Mari kita lihat bagaimana JSONModel dapat Simpan daging Anda.

Perhatikan bahwa saya penulis JSONModel, mengembangkan dan memelihara Perpustakaan dengan bantuan kontributor pada GitHub. Aku jelas bias, tetapi ini adalah kabar baik untuk Anda karena Anda akan dapat belajar dari orang yang menciptakan perpustakaan.

Fitur dasar

Dalam bagian ini, saya secara singkat akan menyoroti dan membahas ciri-ciri dasar perpustakaan. Jika Anda terlalu bersemangat untuk menyelam ke dalam kode, kemudian melompat ke bagian berikutnya,The Hello Chuck Appp.

Otomatis pemetaan JSON untuk Model kelas

Ketika Anda melihat data JSON yang populates objek model Anda, Anda sering merasa cenderung untuk mencocokkan nama tombol yang digunakan di JSON data. Anda akhirnya menulis kode yang terlihat seperti ini:

Dengan JSONModel, Anda tidak perlu menulis kode boilerplate jenis ini. JSONModel secara otomatis peta JSON untuk sifat-sifat kelas model.

Validasi input

JSONModel secara otomatis memeriksa sifat-sifat kelas model Anda dan memastikan bahwa JSON yang digunakan untuk menginisialisasi objek model sesuai definisi kelas model. Jika ada ketidakcocokan, kemudian objek model tidak diinisialisasi.

Selain itu, model memverifikasi bahwa JSON data sesuai jenis yang didefinisikan oleh kelas model. Jika Anda mendapatkan array alih-alih string, misalnya, JSON data dianggap tidak valid.

Transformasi data

Karena spesifikasi JSON yang sederhana, mudah digunakan, tetapi ini juga menghilangkan banyak metadata bila digunakan untuk mentransfer data dari backend untuk klien dan sebaliknya. Sebuah objek JSON hanya dapat berisi string, angka, array, dan objek.

Dalam kelas model Objective-C Anda, Anda biasanya memiliki sifat dari berbagai jenis, tidak terbatas string dan angka, yang adalah jenis data hanya didukung oleh JSON. Misalnya, Anda sering memiliki URL dalam sebuah objek JSON. Sangat mudah untuk mengkonversi string dalam sebuah objek JSON ke objek NSURL, tapi bagian yang mengganggu adalah bahwa Anda perlu untuk melakukan ini sendiri.

JSONModel Mari kita Anda mendefinisikan transformasi untuk tipe data sekali dan menggunakannya di seluruh model Anda. Misalnya, jika respon JSON yang menyediakan Anda dengan tanggal sebagai timestamp dalam bentuk integer, maka Anda hanya perlu memberitahu JSONModel bagaimana mengkonversi integer ke objek NSDate sekali. Anda akan belajar lebih banyak tentang transformasi data di angsuran kedua dari seri ini.

Model bersarang

Lebih sering daripada tidak, respons JSON memiliki struktur yang kompleks. Objek, misalnya, dapat berisi satu atau lebih objek lain. Lihatlah objek JSON berikut.

JSONModel Mari kita Anda sarang kelas model terlalu. Tidak peduli apakah model Anda berisi model lain atau sebuah array dari objek model, JSONModel memeriksa kelas model Anda dan secara otomatis menginisialisasi objek dari jenis yang benar. Kita akan mengambil melihat lebih dekat bersarang model sedikit kemudian.

Itu adalah teori cukup untuk saat ini. Mari kita belajar bagaimana menggunakan perpustakaan JSONModel dengan menciptakan sederhana, contoh aplikasi.

Halo Chuck App

Sekarang bahwa Anda memiliki gagasan dasar apa JSONModel, Anda akan mengembangkan sebuah aplikasi sederhana yang mengambil umpan JSON Chuck Norris lelucon dan menunjukkan mereka kepada pengguna satu per satu. Setelah selesai, aplikasi akan terlihat seperti ini:

Langkah 1: Setup proyek

Meluncurkan Xcode 5, membuat proyek baru dengan memilih New > project... dari File menu, dan pilih aplikasi pemandangan tunggal template dari daftar iOS aplikasi template.

Nama proyek HelloChuck, memberitahu Xcode mana Anda ingin menyimpannya, dan tekan Create. Ada tidak perlu untuk menempatkan proyek di bawah kontrol sumber.

Selanjutnya, men-download versi terbaru dari perpustakaan JSONModel dari GitHub, unzip arsip, dan memiliki puncak di dalam.

Arsip berisi demo aplikasi untuk iOS dan OSX, unit test, dan banyak lagi. Hanya Anda tertarik dalam folder bernama JSONModel. Seret ke proyek Xcode Anda. Instalasi ini bahkan lebih mudah jika Anda menggunakan CocoaPods.

Langkah 2: Buat kelas Model

JSON feed Anda akan menggunakan ini cukup sederhana. Ini berisi array lelucon, dengan setiap lelucon yang memiliki id, lelucon itu sendiri, dan secara opsional, array tag.

Mari kita mulai dengan membuat kelas model untuk mencocokkan JSON data. Membuat sebuah class baru, JokeModel, dan membuatnya mewarisi dari JSONModel. Menambahkan properti id dan text untuk mencocokkan kunci dalam JSON data seperti:

Perpustakaan JSONModel akan secara otomatis mengkonversi angka untuk mencocokkan jenis properti.

Anda juga perlu untuk membuat sebuah kelas untuk objek tag di JSON data. Membuat sebuah class baru, TagModel, dan membuatnya mewarisi JSONModel. Menyatakan dua sifat id dan tag jenis NSString. Kelas TagModel akan terlihat seperti ini:

Perhatikan bahwa Anda telah menetapkan jenis id untuk NSString. JSONModel baik-baik saja tahu bagaimana mengubah nomor untuk string, ini akan menangani transformasi untuk Anda. Idenya adalah bahwa Anda hanya perlu fokus pada data yang Anda butuhkan dalam aplikasi Anda tanpa harus khawatir tentang apa data JSON terlihat seperti.

Meskipun kelas TagModel siap pakai, Anda perlu cara untuk menjelaskan kepada kelas JokeModel bahwa tag kunci berisi daftar contoh TagModel. Ini sangat mudah dilakukan dengan JSONModel. Tambahkan protokol kosong baru di TagModel.h dan menyebutnya TagModel:

Buka JokeModel.h dan impor file header kelas TagModel:

Sini datang keajaiban. Mendeklarasikan properti baru untuk JokeModel seperti ditunjukkan di bawah ini. Properti Tag jenis NSArray dan sesuai dua protokol.

  1. TagModel adalah protokol Anda menyatakan beberapa saat yang lalu. Ia memberitahu JokeModel yang array Tag harus berisi contoh kelas TagModel.
  2. Dengan mengikuti protokol opsional, kelas JokeModel tahu bahwa JSON data tidak selalu berisi daftar tag.

Ini adalah saat yang baik untuk menekankan bahwa setiap properti dalam kelas model Anda adalah secara default yang diperlukan. Jika id atau teks yang hilang di JSON data, inisialisasi objek JokeModel akan gagal. Namun, jika Tag absen untuk lelucon tertentu, JSONModel tidak akan mengeluh tentang hal itu.

Langkah 3: Lihat Controller Setup

Pertama Anda harus membuat beberapa penyesuaian untuk kelas ViewController. Membuka ViewController.m dan, di bawah pernyataan impor yang ada di bagian atas, mengimpor kelas JokeModel:

Anda perlu menambahkan dua sifat kelas ViewController:

  • label untuk menampilkan teks lelucon ke layar
  • jokes untuk menyimpan berbagai lelucon

Anda juga perlu untuk mendirikan label sehingga siap setiap kali Anda mengambil JSON data dan memiliki sebuah lelucon yang siap untuk ditampilkan. Memperbarui metode viewDidLoad seperti yang ditunjukkan di bawah ini.

Anda membuat sebuah instance UILabel ukuran layar perangkat dan Anda mengatur properti alpha ke 0. Label tersembunyi sampai lelucon pertama siap untuk ditampilkan.

Di baris terakhir dari viewDidLoad, Anda memanggil fetchJokes, di mana aplikasi mengambil data JSON terpencil dan toko isinya dalam tampilan controller jokes properti. Anda akan menerapkan fetchJokes sebentar.

Langkah 4: Mengambil JSON dan membuat Model objek

Dalam contoh ini, Anda akan menggunakan NSURLSession kelas untuk mengambil data JSON terpencil. Anda membuat URL untuk permintaan, menginisialisasi tugas data, dan mengirimkannya dalam perjalanannya.

dataTaskWithURL:completionHandler: menciptakan instance NSURLSessionDataTask dengan URL yang dilewatkan ke. Dengan memanggil resume tugas data, Anda mengatakan misalnya NSURLSession untuk menambahkan tugas data untuk antrian yang.

Selanjutnya, Anda perlu menambahkan kode untuk menginisialisasi instance JokeModel. Ganti //handle data di sini dengan:

arrayOfModelsFromData:error: mengambil objek NSData dari respons JSON dan mengembalikan array dari model. Tapi apa yang terjadi di bawah kap?

  1. [JokeModel arrayOfModelsFromData:error:] mengambil JSON data dan mengubahnya menjadi sebuah array object JSON.
  2. Kemudian JokeModel loop atas objek tersebut dan menciptakan JokeModel contoh dari setiap objek JSON.
  3. Setiap contoh JokeModel memeriksa data JSON yang menerima dan dan menginisialisasi properti dengan nilai-nilai yang tepat.
  4. Jika contoh JokeModel menemukan konten di data Tag key, kemudian menciptakan array TagModel contoh dari nilai yang terkait dengan tombol tag.

Jika Anda hanya perlu membuat satu contoh, kemudian initWithData: dan initWithString: metode Anda perlu menggunakan. Kita akan mengambil melihat lebih dekat metode ini dalam tutorial berikutnya.

Setelah inisialisasi array lelucon, Anda dapat menampilkan lelucon pertama kepada pengguna menggunakan kode snippet berikut.

Langkah 5: Menampilkan lelucon

Anda pertama menarik sebuah jokes acak dari array lelucon dan menyimpannya dalam model. Jika lelucon memiliki tag, Anda menyimpannya sebagai daftar dipisahkan koma dalam tag nama variabel. Jika lelucon tidak memiliki setiap tag, Anda mengatur tag @"tidak ada tag".

Anda memperbarui label untuk menunjukkan id, teks, dan tag saat ini lelucon dan menggunakan animasi memudar untuk menunjukkan lelucon kepada pengguna.

Ketika animasi selesai, Anda menunggu lima detik sebelum menerapkan hideJoke, yang menyembunyikan lelucon dengan lain animasi memudar. Ketika animasi selesai, Anda memanggil showNextJoke sekali lagi.

Hal ini menciptakan loop tak terbatas, memudar lelucon yang dipilih secara acak dan keluar. Efek keren. Mencobanya dengan menjalankan aplikasi.

Namun, ada masalah bahwa mencetak array Tag menampilkan benda-benda TagModel bukan string obyek. Perilaku ini adalah benar-benar fitur JSONModel Perpustakaan. Secara otomatis membuat deskripsi benda tersebut seperti yang Anda lihat dalam gambar sebelumnya. Daftar objek model properti dan nilai-nilai mereka, yang benar-benar membantu dengan debugging.

Langkah 6: Menyesuaikan model

Untuk menyelesaikan tutorial ini, Anda akan menulis Anda baris pertama kode model. Model yang mewarisi dari JSONModel yang sama seperti setiap kelas Objective-C lainnya. Ini berarti bahwa Anda dapat meng-override metode JSONModel dan menyesuaikan perilaku mereka seperti yang Anda sukai.

Buka TagModel.m dan menimpa default Deskripsi metode:

Kapan Anda sekarang panggilan componentsJoinedBySeparator: pada array tag, bukan Deskripsi default TagModel Anda akan hanya mendapatkan tag teks.

Mencobanya dengan menjalankan aplikasi satu kali lagi. Sekarang Anda akan melihat daftar tag rapi muncul di bawah setiap lelucon.

Kesimpulan

Anda sekarang memiliki pemahaman dasar tentang Perpustakaan JSONModel. Sejauh ini, yang telah Anda pelajari:

  • cara membuat sebuah kelas model sederhana yang mewarisi dari JSONModel
  • Bagaimana mendefinisikan sifat wajib dan opsional
  • dan bagaimana menggabungkan model kelas

Dalam tutorial singkat ini, saya hanya menyentuh pada beberapa fitur dari JSONModel Perpustakaan. Dalam angsuran berikutnya dari seri ini, Anda akan mempelajari lebih lanjut tentang transformasi data, bekerja dengan remote JSON api, dan Anda akan melihat ke dalam beberapa fitur JSONModel yang lebih maju.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.