Membuat Simple TableApp dengan PList (Property List)

Pada tutorial kali ini sebelumnya kita sudah mempelajari bagaimana membuat aplikasi sederhana tentang menampilkan daftar resep. Jika anda melihat ke dalam aplikasi ini, semua resep sudah dimasukan ke dalam kode sumbernya. Pada tutorial ini saya menjaga bagaimana dibuat sesederhana mungkin dan fokus menunjukkan cara membuat UITableView. Namun, pada prakteknya ada beberapa penulisan kode yang sulit pada setiap item dalam kode. Dalam aplikasi nyatam kita gunakan untuk menampilkan informasi yang sifatnya statis dan menempatkannya ke dalam sebuah file atau database di tempat lain. Dalam pemrograman iOS, kita gunakan untuk menyimpan data struktur sederhana contohnya pengaturan aplikasi. Di dalam tutorial ini akan kita akan membuat berubahan pada Tabel sederhana dengan menggunakan Property List.

Secara singkat beberapa materi yang kita bahas diantaranya adalah:
  1. Mengkonversi data dari tabel array (statis) ke Property List
  2. Bagaimana membaca Property List

Mengapa mengeksternalisasi Tabel Data?


Ini adalah cara yang baik untuk memisahkan data statis dari kode. Apa keuntungannya kita harus membuat tabel data ke sumber eksternal? Mari saya coba meminta Anda menambahkan 50 resep lainnya di dalam tabel sederhana dibawah ini. Mungkin Anda akan merasa direpotkan dengan mengubah kembali kode dan menempatkan semua resep baru di dalam inisialisasi berikut ini:

1
2
3
4
5
6
7
8
    // Initialize table data
    tableData = [NSArray arrayWithObjects:@"Egg Benedict"@"Mushroom Risotto"@"Full Breakfast"@"Hamburger"@"Ham and Egg Sandwich"@"Creme Brelee"@"White Chocolate Donut"@"Starbucks Coffee"@"Vegetable Curry"@"Instant Noodle with Egg"@"Noodle with BBQ Pork"@"Japanese Noodle with Pork"@"Green Tea"@"Thai Shrimp Cake"@"Angry Birds Cake"@"Ham and Cheese Panini"nil];
 
    // Initialize thumbnails
    thumbnails = [NSArray arrayWithObjects:@"egg_benedict.jpg"@"mushroom_risotto.jpg"@"full_breakfast.jpg"@"hamburger.jpg"@"ham_and_egg_sandwich.jpg"@"creme_brelee.jpg"@"white_chocolate_donut.jpg"@"starbucks_coffee.jpg"@"vegetable_curry.jpg"@"instant_noodle_with_egg.jpg"@"noodle_with_bbq_pork.jpg"@"japanese_noodle_with_pork.jpg"@"green_tea.jpg"@"thai_shrimp_cake.jpg"@"angry_birds_cake.jpg"@"ham_and_cheese_panini.jpg"nil];
 
    // Initialize Preparation Time
    prepTime = [NSArray arrayWithObjects:@"30 min"@"30 min"@"20 min"@"30 min"@"10 min"@"1 hour"@"45 min"@"5 min"@"30 min"@"8 min"@"20 min"@"20 min"@"5 min"@"1.5 hour"@"4 hours"@"10 min"nil];



Sebenarnya tidak ada yang salah kita menggunakan cara ini. Tapi kalau melihat kode! Ini tidak mudah untuk mengeditnya  dan kita harus secara teliti mengikuti sintaks Objective-C. Mengubah kode pada inisilisasi diatas rentan dapat menimbulkan kesalahan kalau kita kurang teliti. Itu bukanlah yang kita inginkan. ini akan lebih baik lagi jika kita pisahkan data dan logika pemrograman (yaitu kode). Apakah terlihat lebih baik jika data tabel disimpan seperti ini?




Contoh Property List

Pada kenyataannya informasi yang ditampilkan (disini dicontohnya informasi resep) tidak membutuhkan orang yang memiliki pengalaman dalam pemrograman iOS. Ketika kita tempatkan data di dalam file eksternal, lebih mudah untuk membaca/mengedit dan lebih di mengerti. Selain itu bagaimana kita dapat tempatkan data pada sis server (Cloud), semua permintaan data pada app ditarik dari sisi server. ini akan memberikan manfaat yang lebih besar, dengan memisahkan data dan menempatkannya pada Cloud kita dapat mengubah data kapan saja tanpa memperbaharui aplikasi kita.

Disini kita tidak akan membahas lebih jauh tentang Cloud. Mari kita kembali pada tutorial semula yaitu bagaimana kita dapat menempatkan semua resep dalam Daftar Properti.

Apa itu Property List?

Property List menawarkan cara yang mudah untuk menyimpan struktur data sederhana. Biasanya muncul dalam format XML. Jika Anda telah mengedit beberapa file konfigurasi di Mac atau iPhone sebelumnya, Anda bisa menemukan file dengan ekstensi .plist.

Anda tidak dapat menggunakan daftar properti untuk menyimpan semua jenis data. Item data dalam daftar properti adalah dari sejumlah jenis termasuk "array", "dictionary", "string", dll Untuk detail termasuk tipe yang didukung, Anda dapat dapatkan referensi di Property List documentation.

Property List umumnya digunakan dalam aplikasi iOS untuk menyimpan pengaturan aplikasi. Ini tidak berarti Anda tidak dapat menggunakannya untuk tujuan lain. Tapi itu dirancang untuk menyimpan sejumlah kecil data.

Apakah ini jalan terbaik menyimpan Tabel Data?

Tidak, jelas tidak. kita menggunakan Property List untuk menunjukkan bagaimana untuk menyimpan data tabel di file eksternal. Ini hanya contoh. Ketika Anda mendapatkan lebih banyak pengalaman, Anda akan belajar cara lain untuk menyimpan data.

Mengkonversi Data Tabel ke Property List


Pertama, buka Project Simple Table di Xcode. Klik kanan pada folder "SimpleTable" dan pilih "New File ...". Pilih "Other" di bawah template "iOS, pilih "Property List" dan klik "Next" untuk melanjutkan.

Buat file baru Property List

Bila diminta, gunakan "resep" sebagai nama file. Setelah Anda konfirmasi, Xcode akan membuat file property list. Secara default, property list adalah kosong.

Property List yang kosong

Ada dua cara untuk mengedit property list. Klik kanan pada area editing dan pilih "Add Row" untuk menambahkan nilai baru.

Menambahkan file baru pada Editor Property List


Kita akan tambahkan tiga data array ke dalam property list, dengan nama: RecipeName, Miniatur dan PrepTime. Kuncinya berfungsi sebagai identifier yang akan kita gunakan dalam penulisan kode untuk memilih array yang sesuai.

Tentukan tiga array dalam Property List


Untuk menambahkan data dalam array, hanya dengan mengklik tombol ikon "+" untuk menambahkan item baru. Ikuti langkah-langkah dalam ilustrasi di bawah ini jika Anda tidak tahu bagaimana melakukannya.


Langkah demi Langkah Prosedur untuk Menambahkan Item di Array

Ulangi prosedur tersebut sampai Anda tambahkan semua nilai untuk array. Property List akan terlihat seperti ini:
Resep Property List yang sudah dibuat


Untuk kemudahan tutorial ini, Anda dapat mendownload recipes.plist dan tambahkan ke dalam project Anda.

Seperti disebutkan sebelumnya, property list biasanya disimpan dalam format XML. Untuk melihat sumber dari property list, klik kanan dan pilih "Open as Source Code".


Kode sumber “recipes.plist” akan muncul seperti ini:


Menambahkan Property List ke dalam Objective C

Selanjutnya, kita akan ubah kode dan kita akan masukan daftar resep dari property list. Ini cukup mudah untuk membaca isi dari property list. IOS SDK sudah dilengkapi dengan beberapa fungsi built-in untuk menangani read/write file.

Ganti kode berikut:

1
2
3
4
5
6
7
8
// Initialize table data
    tableData = [NSArray arrayWithObjects:@"Egg Benedict"@"Mushroom Risotto"@"Full Breakfast"@"Hamburger"@"Ham and Egg Sandwich"@"Creme Brelee"@"White Chocolate Donut"@"Starbucks Coffee"@"Vegetable Curry"@"Instant Noodle with Egg"@"Noodle with BBQ Pork"@"Japanese Noodle with Pork"@"Green Tea"@"Thai Shrimp Cake"@"Angry Birds Cake"@"Ham and Cheese Panini"nil];
 
    // Initialize thumbnails
    thumbnails = [NSArray arrayWithObjects:@"egg_benedict.jpg"@"mushroom_risotto.jpg"@"full_breakfast.jpg"@"hamburger.jpg"@"ham_and_egg_sandwich.jpg"@"creme_brelee.jpg"@"white_chocolate_donut.jpg"@"starbucks_coffee.jpg"@"vegetable_curry.jpg"@"instant_noodle_with_egg.jpg"@"noodle_with_bbq_pork.jpg"@"japanese_noodle_with_pork.jpg"@"green_tea.jpg"@"thai_shrimp_cake.jpg"@"angry_birds_cake.jpg"@"ham_and_cheese_panini.jpg"nil];
 
    // Initialize Preparation Time
    prepTime = [NSArray arrayWithObjects:@"30 min"@"30 min"@"20 min"@"30 min"@"10 min"@"1 hour"@"45 min"@"5 min"@"30 min"@"8 min"@"20 min"@"20 min"@"5 min"@"1.5 hour"@"4 hours"@"10 min"nil];
dengan:
1
2
3
4
5
6
7
8
    // Find out the path of recipes.plist
    NSString *path = [[NSBundle mainBundle] pathForResource:@"recipes" ofType:@"plist"];  

    // Load the file content and read the data into arrays
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    tableData = [dict objectForKey:@"RecipeName"];
    thumbnails = [dict objectForKey:@"Thumbnail"];
    prepTime = [dict objectForKey:@"PrepTime"];
Di balik Perubahan Kode
Baris # 2 - Sebelum membaca "recipes.plist" file, bertujuan untuk mengambil path lengkap dari resource.
Baris # 5 - Kita definisikan tiga key seperti (RecipeName, Miniatur, PrepTime) dalam property list. Disini dijelaskan bahwa setiap key dikaitkan dengan array tertentu, yang merupakan nilai. Dalam pemrograman iOS, kita menggunakan kamus istilah untuk merujuk pada hubungan pasangan key-value ini. Class NSDictionary menyediakan metode yang diperlukan untuk mengelola dictionary. Di sini kita menggunakan "initWithContentsOfFile" method class NSDictionary untuk membaca pasangan key-value dalam file property list.
Baris # 6-8 - ini baris kode mengambil array yang sesuai dengan kunci kita definisikan sebelumnya.


Setelah lakukan perubahan pada kode, kita akan coba jalankan aplikasi ini yaitu aplikasi resep yang ditampilkan dari property list.



0 Response to "Membuat Simple TableApp dengan PList (Property List)"

Post a Comment