Indonesian (Bahasa Indonesia) translation by Shylchemist (you can also view the original English article)
Dalam tutorial ini saya akan menunjukkan cara menggunakan kelas NSUserDefaults untuk menyimpan dan memperbarui pengaturan aplikasi. Dalam prosesnya, kita akan membangun aplikasi demo yang disebut "Kontak" yang akan menyimpan gambar dan informasi kontak yang disediakan pengguna.
Apa itu Kelas NSUserDefaults?
Dengan kelas NSUserDefaults, Anda dapat menyimpan pengaturan dan properti yang terkait dengan aplikasi atau data pengguna. Misalnya, Anda bisa menyimpan gambar profil yang ditetapkan oleh pengguna atau skema warna default untuk aplikasi. Objek akan disimpan dalam apa yang dikenal sebagai "sistem default" iOS. Sistem iOS default tersedia di seluruh kode di aplikasi Anda, dan semua data yang disimpan ke sistem default akan bertahan melalui sesi aplikasi. Ini berarti bahwa bahkan jika pengguna menutup aplikasi Anda atau reboot ponsel mereka, data yang disimpan akan tetap tersedia saat berikutnya mereka membuka aplikasi!
Dengan NSUserDefaults Anda dapat menyimpan objek dari tipe kelas berikut:
- NSData
- NSString
- NSNumber
- NSDate
- NSArray
- NSDictionary
Jika Anda ingin menyimpan objek jenis apa pun, seperti UIImage, Anda biasanya perlu mengarsipkannya atau membungkusnya dengan instance NSData, NSNumber, atau NSString.
Sekarang setelah Anda mengetahui sedikit tentang apa yang dapat dilakukan dengan NSUserDefaults, mari mulai mempelajari cara menggunakan sistem default dengan aplikasi sampel sederhana yang akan menyimpan informasi kontak.
Langkah 1: Membuat Proyek
Buka Xcode dan pilih "Create a new Xcode project". Pilih Aplikasi Berbasis Tampilan dan klik Berikutnya. Masukkan nama untuk proyek Anda (Saya menyebut saya "Kontak"). Masukkan Pengenal Perusahaan Anda dan pastikan Anda memilih iPhone untuk Keluarga Perangkat, karena kita akan membuat aplikasi iPhone. Jika sudah selesai, klik next. Pilih tempat untuk menyimpan proyek Anda dan kemudian klik buat.



Langkah 2: Merancang Antarmuka
Dalam folder "Kontak" di "Project Navigator" klik pada ContactViewController.xib.
Seret tiga UITextFields dari perpustakaan ke tampilan dan atur seperti di bawah ini. Lakukan hal yang sama dengan UIImageView dan dua Round Round Buttons.
Klik TextField pertama dan ketik "Nama depan" di bidang teks Placeholder. Sekarang klik TextField kedua dan ketik "Last name" di bidang teks Placeholder. Akhirnya, klik TextField ketiga dan terakhir dan ketik "age" di bidang teks Placeholder. Untuk jenis keyboard, pilih Number Pad, karena Anda hanya perlu angka untuk memasuki usia Anda.
Ubah teks tombol pertama menjadi "Save" dan teks tombol kedua menjadi "Choose Image".

Sekarang kita akan membuat koneksi. Xcode 4 memiliki cara mudah dan cepat yang baru untuk melakukannya. Pilih tombol tengah Editor untuk menampilkan "Asisten editor".

Klik nama depan TextField dan seret CTRL ke interface. Munculan akan muncul, masukkan "firstNameTextField" untuk nama dan klik "connect."

Lakukan hal yang sama dengan Text Field nama belakang dan usia dan UIImageView, tetapi sebut mereka lastNameTextField, ageTextField dan contactImageView. Untuk tombol, kita perlu mengubah koneksi ke Action alih-alih Outlet. Jadi CTRL-seret dari tombol simpan ke interface, tapi kali ini di bawah kurung kurawal. Ubah Koneksi ke Action dan masukkan "save" untuk nama. Lakukan hal yang sama dengan tombol Choose Image, tetapi kali ini masukkan "selectImage" untuk nama. Sekarang kode dari ContactViewController.h harus dibaca sebagai berikut:
#import <UIKit/UIKit.h> @interface ContactViewController : UIViewController { IBOutlet UIImageView *contactImageView; IBOutlet UITextField *firstNameTextField; IBOutlet UITextField *lastNameTextField; IBOutlet UITextField *ageTextField; } - (IBAction)save:(id)sender; - (IBAction)chooseImage:(id)sender; @end
Sekarang kita selesai dengan interface. Klik Build and Run untuk melihat apakah berjalan baik. Masukkan beberapa teks dan tutup aplikasi. Jika Anda membuka aplikasi lagi, Anda mungkin akan melihat bahwa teks yang Anda masukkan masih ada. Jika demikian, ini disebabkan oleh kemampuan multitasking bawaan iOS. Jika Anda menghapus aplikasi dari bilah multitasking dan membuka aplikasi lagi, Anda akan melihat bahwa teks yang Anda masukkan hilang. Dalam tutorial ini kita akan menggunakan NSUserDefaults untuk menyimpan informasi yang dimasukkan bahkan jika Anda "benar-benar" menutup aplikasi. Ini akan memungkinkan data untuk bertahan melalui beberapa sesi.
Langkah 3: Memilih Gambar
Beralih kembali ke mode Editor standar, sehingga Anda memiliki lebih banyak ruang untuk bekerja di dalamnya. Buka ContactViewController.h dan menambahkan UIImagePickerControllerDelegate dan UINavigationControllerDelegate.
<UIImagePickerControllerDelegate, UINavigationControllerDelegate>
Jika Anda selesai dengan itu, buka ContactViewController.m dan gulir ke bawah ke tindakan ChooseImage dan modifikasi kode untuk dibaca sebagai berikut:
- (IBAction)chooseImage:(id)sender { UIImagePickerController *picker = [[[UIImagePickerController alloc] init] autorelease]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController:picker animated:YES]; }
Pertama, kita membuat UIImagePickerController, lalu kita atur delegate ke self. Selanjutnya, kita mengaktifkan pengeditan pengguna, lalu mengatur jenis sumber ke pustaka foto, dan akhirnya kita menunjukkannya dengan animasi kepada pengguna.
Di bawah pilih tindakan gambar, iklankan metode delegasi pemilih gambar berikut:
#pragma mark - Image Picker Delegate - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { contactImageView.image = image; [picker dismissModalViewControllerAnimated:YES]; } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [picker dismissModalViewControllerAnimated:YES]; }
Pada metode pertama, kita mengatur image contactImageView ke gambar yang dipilih dan kemudian mengabaikan UIImagePickerController. Pada metode kedua, kita hanya mengabaikan UIImagePickerController.
Langkah 4: Menyimpan Data
Anda dapat menyimpan teks dengan fungsi: setObject:(id) forKey:(NSString *). Kunci perlu menjadi kunci khusus untuk objek yang Anda simpan karena Anda juga membutuhkan kunci itu untuk mendapatkan data yang disimpan. Anda dapat menyimpan bilangan bulat dengan fungsi: setInteger:(NSInteger) forKey:(NSString *). Untuk menyimpan gambar, pertama-tama kita perlu membuat instance NSData dari itu.
Buka tindakan simpan dan modifikasi kode untuk dibaca sebagai berikut:
- (IBAction)save:(id)sender { // Hide the keyboard [firstNameTextField resignFirstResponder]; [lastNameTextField resignFirstResponder]; [ageTextField resignFirstResponder]; // Create strings and integer to store the text info NSString *firstName = [firstNameTextField text]; NSString *lastName = [lastNameTextField text]; int age = [[ageTextField text] integerValue]; // Create instances of NSData UIImage *contactImage = contactImageView.image; NSData *imageData = UIImageJPEGRepresentation(contactImage, 100); // Store the data NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:firstName forKey:@"firstName"]; [defaults setObject:lastName forKey:@"lastname"]; [defaults setInteger:age forKey:@"age"]; [defaults setObject:imageData forKey:@"image"]; [defaults synchronize]; NSLog(@"Data saved"); }
Pertama-tama kita menyembunyikan keyboard. Kemudian kita membuat string teks yang Anda masukkan di text field nama depan dan belakang. Kita juga membuat bilangan bulat dari usia yang Anda masukkan. Daripada menyimpan gambar dari contactImageView sebagai objek NSData, karena kita tidak dapat menyimpan UIImage secara langsung dengan NSUserDefaults. Kemudian menyimpan data, kita memanggil fungsi standardUserDefaults untuk menyimpan data di dalamnya. Akhirnya kita menyinkronkan database standardUserDefaults.
Langkah 5: Dapatkan Data yang Disimpan
Akhirnya kita ingin mendapatkan data yang disimpan. Kita melakukan ini dalam metode viewDidLoad, karena metode itu dipanggil saat aplikasi terbuka. Gulir ke bawah ke metode “viewDidLoad”, batalkan komentarnya, dan modifikasi kode sebagai berikut:
- (void)viewDidLoad { // Get the stored data before the view loads NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *firstName = [defaults objectForKey:@"firstName"]; NSString *lastName = [defaults objectForKey:@"lastname"]; int age = [defaults integerForKey:@"age"]; NSString *ageString = [NSString stringWithFormat:@"%i",age]; NSData *imageData = [defaults dataForKey:@"image"]; UIImage *contactImage = [UIImage imageWithData:imageData]; // Update the UI elements with the saved data firstNameTextField.text = firstName; lastNameTextField.text = lastName; ageTextField.text = ageString; contactImageView.image = contactImage; [super viewDidLoad]; }
Pertama kita memanggil fungsi standardUserDefaults lagi, sehingga kita bisa mendapatkan data yang disimpan. Kita menempatkan nama depan dan belakang di NSString. Meskipun usianya adalah bilangan bulat, kita membuat string untuk menyimpannya, karena tidak dapat langsung mengatur teks dari TextField ke integer. Kita menempatkan gambar dalam objek NSData dan kemudian membuat UIImage dari objek NSData. Akhirnya, kita memperbarui elemen UI dengan data yang disimpan.
Sekarang setelah aplikasi selesai, bangun dan jalankan kembali. Masukkan data Anda dan pilih gambar. Tutup aplikasi dari bar multitasking dan kemudian buka aplikasi lagi. Data masih harus ada di sana saat ini, dan jika demikian, aplikasi demo berfungsi!
Terima kasih telah membaca tutorial ini tentang NSUserDefaults! Jika Anda memiliki pertanyaan atau komentar pada tutorial ini, tinggalkan di bagian komentar di bawah!