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

Pengambilan Data Inti Mudah dengan Magical Record

by
Read Time:15 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Taufan Prasetyo Basri (you can also view the original English article)

Magical Record, diciptakan oleh Saul Mora, adalah pustaka sumber terbuka yang membuat bekerja dengan Core Data lebih mudah dan lebih elegan. Perpustakaan ini terinspirasi oleh pola rekaman aktif yang juga ditemukan di Ruby on Rails. Tutorial ini akan mengajari Anda cara menggunakan Magical Record di aplikasi Anda sendiri!

Jadi, mengapa Magical Record? Jika Anda sudah mengembangkan untuk iOS atau OS X untuk beberapa waktu, kemungkinan Anda sudah merasakan Core Data. Ini berarti bahwa Anda tahu bahwa itu bisa menjadi sedikit rumit untuk mengatur tumpukan Core Data dan, jujur ​​saja, bekerja dengan Core Data dapat menjadi sedikit rumit terutama karena sintaks verbose nya. Sebagai contoh, mengambil data dari toko persisten cukup verbose terutama bila dibandingkan dengan bagaimana aplikasi Ruby on Rails menangani tugas ini.


Prasyarat

Meskipun Magical Record bekerja dengan Data Inti lebih mudah, itu adalah kunci bahwa Anda memiliki pemahaman yang baik tentang Data Inti jika Anda memutuskan untuk menggunakannya dalam proyek. Terlepas dari namanya, Magical Record tidak melakukan sihir apa pun di belakang layar yang membuat Core Data bekerja secara berbeda. Dengan kata lain, jika Anda mengalami masalah di beberapa titik, sangat penting bahwa Anda memahami bagaimana Core Data bekerja secara internal sehingga Anda dapat memperbaiki masalah yang mungkin muncul di sepanjang jalan.


Persyaratan

Sejak diperkenalkannya Magical Record, persyaratan telah ditingkatkan ke iOS 5.0 (atau lebih tinggi) atau OS X 10.7 (atau lebih tinggi). Juga perlu disebutkan bahwa Magical Record mendukung ARC di luar kotak.


Catatan Magis

Cara terbaik untuk menunjukkan kepada Anda apa yang ditawarkan oleh Magical Record adalah membuat aplikasi yang memanfaatkan perpustakaan hebat ini. Ini akan menunjukkan kepada Anda betapa mudahnya memulai dengan Magical Record dan dengan memulai dari awal ia akan menunjukkan kepada Anda apa yang terlibat dalam pembuatan proyek dengan Core Data dan Magical Record. Aplikasi yang akan kami buat adalah aplikasi pencatatan sederhana di mana pengguna dapat membuat, memperbarui, dan menghapus catatan - kandidat yang baik untuk Data Inti.

Karena Anda telah membaca sejauh ini, saya berasumsi bahwa Anda terbiasa dengan pengembangan iOS dan memiliki pemahaman dasar tentang Core Data. Dalam artikel ini, saya terutama akan fokus pada aspek Data Inti dari aplikasi, yang berarti bahwa saya tidak akan membahas setiap cuplikan kode secara detail.


Langkah 1: Pengaturan Proyek

Mulai dengan membuat proyek baru berdasarkan Templat Aplikasi Tampilan Tunggal (gambar 1) dan beri nama Catatan Magis (gambar 2). Atur keluarga perangkat ke iPhone dan aktifkan ARC dengan menandai kotak centang berlabel Gunakan Penghitungan Referensi Otomatis. Kami tidak akan menggunakan Storyboards atau Tes Unit dalam tutorial ini.

Magical Record and Core Data: Project Setup - Figure 1Magical Record and Core Data: Project Setup - Figure 1Magical Record and Core Data: Project Setup - Figure 1
Magical Record and Core Data: Project Configuration - Figure 2Magical Record and Core Data: Project Configuration - Figure 2Magical Record and Core Data: Project Configuration - Figure 2

Langkah 2: Tambahkan Rekaman Magis

Karena kami akan menggunakan Data Inti dalam proyek ini, jangan lupa untuk menautkan proyek Anda dengan kerangka Core Data. Karena ini adalah tutorial yang lebih canggih, saya berasumsi bahwa Anda sudah tahu cara melakukan ini.

Menambahkan perpustakaan Catatan Magis ke proyek Anda tidak memerlukan sihir apa pun. Unduh versi terbaru dari GitHub, buka arsip, dan seret folder bernama MagicalRecord ke dalam proyek Xcode Anda. Pastikan juga untuk menyalin isi folder ke dalam proyek Anda dengan mencentang kotak centang berlabel Salin item ke folder grup tujuan (jika diperlukan) dan jangan lupa untuk menambahkan perpustakaan Catatan Magis ke target Catatan Sihir (gambar 3). Pendekatan alternatif untuk menambah catatan ajaib untuk proyek Anda adalah dengan menggunakan CocoaPods.

Magical Record and Core Data: Add Magical Record - Figure 3Magical Record and Core Data: Add Magical Record - Figure 3Magical Record and Core Data: Add Magical Record - Figure 3

Untuk menggunakan catatan ajaib dalam kelas Anda, kita perlu mengimpor satu header file, CoreData+MagicalRecord.h. Namun, karena kami akan menggunakan magis catatan cukup dalam tutorial ini jauh lebih mudah untuk memindahkan pernyataan impor ke file Prefix.pch proyek Anda sebagai gantinya. Hal ini akan memastikan bahwa catatan ajaib tersedia di setiap kelas proyek Anda.

Secara default, semua catatan ajaib metode diawali dengan MR_. Anda dapat menghilangkan awalan MR_ dengan menambahkan satu baris tambahan untuk proyek Anda Prefix.pch file, #define MR_SHORTHAND. Penting bahwa Anda tambahkan baris ini sebelum mengimpor file header ajaib catatan.


Step 3: Membuat Model Data inti

Sebelum mendirikan tumpukan Data inti, kita perlu membuat model Data inti. Data inti model untuk proyek ini sederhana seperti yang terdiri dari hanya satu entitas bernama catatan. Catatan entity memiliki empat atribut, tanggal, judul, badan, dan kata kunci. Judul, badan, dan kata kunci adalah jenis string, sedangkan tanggal adalah jenis tanggal.

Mulailah dengan membuat model Data inti baru dan nama itu MagicalNotes (gambar 4). Buat entitas catatan dan tambahkan empat atribut seperti diuraikan di atas (gambar 5).

Magical Record and Core Data: Create a Core Data Model - Figure 4Magical Record and Core Data: Create a Core Data Model - Figure 4Magical Record and Core Data: Create a Core Data Model - Figure 4
Magical Record and Core Data: Create a Core Data Model - Figure 5Magical Record and Core Data: Create a Core Data Model - Figure 5Magical Record and Core Data: Create a Core Data Model - Figure 5

Sebelum kita melanjutkan, kita perlu menciptakan subclass NSManagedObject kustom untuk entitas catatan. Hal ini penting karena catatan ajaib menambah sejumlah berguna kelas metode NSManagedObject kelas, yang akan membuat bekerja dengan entitas catatan lebih mudah karena Anda akan lihat dalam beberapa menit. Pilih catatan entitas dalam model Data inti Anda, membuat file baru, pilih tab Data inti di sebelah kiri, dan pilih opsi subclass NSManagedObject di sebelah kanan (gambar 6).

Magical Record and Core Data: Create a Managed Object Subclass - Figure 6Magical Record and Core Data: Create a Managed Object Subclass - Figure 6Magical Record and Core Data: Create a Managed Object Subclass - Figure 6

Step 4: Membuat tumpukan Data inti

Menyiapkan tumpukan Data inti adalah cukup sedikit pekerjaan jika Anda tidak menggunakan salah satu template Xcode disediakan. Dengan magis catatan, namun, hal ini tidak terjadi. Kepala ke aplikasi: didFinishLaunchingWithOptions: metode aplikasi Anda mendelegasikan dan menambahkan potongan kode berikut.

Thats semua ada untuk itu. Secara default, nama toko yang ajaib catatan menciptakan bagi Anda identik dengan nama aplikasi Anda. Namun, Anda dapat menyesuaikan nama toko dengan menerapkan setupCoreDataStackWithStoreNamed: sebaliknya dan melewati nama toko.

Di belakang layar, catatan ajaib akan instantiate konteks dikelola objek pada benang serta Koordinator toko gigih dan dikelola objek model. Bagaimana magis adalah bahwa?

Penebangan: Kemampuan untuk log Data inti pesan dan kesalahan ke konsol dibangun dalam catatan ajaib. Lihatlah konsol setelah membangun dan menjalankan aplikasi Anda untuk pertama kalinya. Log di konsol tunjukkan persis apa catatan ajaib lakukan di belakang layar.


Langkah 5: Meletakkan dasar

Sebelum kita dapat mulai membuat catatan baru, pertama kita perlu beberapa pekerjaan kasar. Kembali Anda mendelegasikan aplikasi aplikasi: didFinishLaunchingWithOptions: metode dan menginisialisasi pengontrol navigasi dengan controller tampilan utama sebagai nya akar Lihat controller. Lihatlah pelaksanaan lengkap aplikasi: didFinishLaunchingWithOptions:.

Kita akan menampilkan catatan dalam tabel lihat jadi mulai dengan menambahkan outlet untuk tampilan tabel di file header controller tampilan utama. Pilih tampilan utama controller XIB file dan seret sebuah instance UITableView dalam tampilan Lihat controller. Jangan lupa untuk menetapkan pemilik File sebagai tampilan tabel dataSource dan mendelegasikan. Juga, pastikan untuk menghubungkan File pemilik tabel Lihat outlet dengan tampilan tabel yang kami hanya menambahkan ke pemandangan.

Dalam tampilan utama controller implementasi file, tambahkan properti pribadi bernama catatan untuk kelas ekstensi di bagian atas. Pastikan properti adalah jenis NSMutableArray. Catatan properti akan menyimpan catatan bahwa kita mengambil dari penyimpanan data dan akan berfungsi sebagai sumber data tampilan tabel.

Dalam tampilan controller viewDidLoad metode, kami mengatur tampilan dengan menelepon setupView pada controller tampilan utama. Ini adalah tidak lebih dari sebuah metode penolong untuk menjaga metode viewDidLoad yang ringkas dan rapi. Dalam setupView, kita menambahkan mengedit dan menambahkan tombol ke bar navigasi dan kita mengambil catatan dari penyimpanan data dengan menerapkan metode fetchNotes.

Mungkin mengejutkan Anda bahwa metode fetchNotes adalah hanya satu baris kode. Ini adalah semua berkat catatan ajaib. Mengambil catatan dari data store yang sederhana seperti memanggil findAll catatan kelas. Metode tersebut mengembalikan array catatan seperti yang Anda harapkan. Jangan lupa impor file header kelas catatan di bagian atas dari file pelaksanaan tampilan utama controller.

Penyortiran catatan mudah dan elegan. Lupa semacam deskriptor dan Lihatlah Diperbarui pelaksanaan metode fetchNotes di bawah ini.

EditNotes: metode ini sederhana. Semua yang kita lakukan adalah beralih gaya mengedit tampilan tabel. Yang harus cukup untuk saat ini.

AddNote: metode tetap kosong untuk saat ini.

Sebelum membangun dan menjalankan aplikasi Anda, kita perlu untuk mengimplementasikan metode protokol sumber data tampilan tabel yang diperlukan. Jika Anda sudah familiar dengan iOS pengembangan, ini tidak boleh terlalu sulit. Lihatlah implementasi berbagai metode di bawah ini untuk penjelasan.

Membangun dan menjalankan aplikasi Anda.


Langkah 6: Membuat catatan

Bila pengguna menyentuh tombol add, pandangan modal harus muncul memungkinkan pengguna untuk menambahkan catatan baru untuk penyimpanan data. Menciptakan subclass UIViewController baru dan nama itu MTEditNoteViewController. Seperti namanya menunjukkan, kami juga akan menggunakan controller pandangan ini untuk mengedit catatan.

Magical Record and Core Data: Create the Edit Note View Controller - Figure 7Magical Record and Core Data: Create the Edit Note View Controller - Figure 7Magical Record and Core Data: Create the Edit Note View Controller - Figure 7

Sebelum menuju ke tampilan controller XIB file, menambah tiga outlet file header Lihat controller. Pertama dua outlet adalah contoh dari UITextField untuk judul dan kata kunci dari catatan. Outlet ketiga adalah instance dari UITextView untuk tubuh catatan.

Menciptakan antarmuka pengguna mengedit catatan Lihat controller tidak boleh terlalu banyak tantangan. Menambahkan dua contoh UITextField dan satu contoh UITextView ke tampilan Lihat controller. Mengkonfigurasi bidang teks yang Anda inginkan, misalnya, dengan memberikan mereka placeholder teks. Jangan lupa untuk menghubungkan File pemilik outlet dengan bidang teks dan tampilan teks.

Magical Record and Core Data: Create the User Interface of the Edit Note View Controller - Figure 8Magical Record and Core Data: Create the User Interface of the Edit Note View Controller - Figure 8Magical Record and Core Data: Create the User Interface of the Edit Note View Controller - Figure 8

Karena kami akan menggunakan MTEditNoteViewController kelas untuk menambahkan dan mengedit catatan, sangat penting bahwa kita tahu apa negara (menambahkan atau mengedit) Lihat controller adalah di setiap saat. Ada beberapa cara untuk memecahkan masalah ini. Salah satu cara adalah dengan menambahkan sebuah catatan pribadi properti untuk view controller, yang adalah nol jika catatan baru dibuat dan yang diatur selama inisialisasi ketika catatan sedang sedang diedit. Dalam situasi seperti ini, saya lebih suka bekerja dengan initializers khusus untuk menghindari kebingungan dan ini juga apa yang memungkinkan saya untuk menjaga catatan properti pribadi. Selain catatan pribadi properti, kita juga menambahkan properti pribadi kedua bernama isEditing, boolean. Alasan untuk ini akan menjadi jelas dalam beberapa menit. Juga, jangan lupa untuk impor file header catatan kelas.

Mari kita pergi melalui berbagai metode langkah demi langkah. Pertama, kami ingin memastikan bahwa kita dapat menambahkan catatan baru untuk penyimpanan data tanpa masalah. Kita mulai dengan initWithNibName:bundle: metode. Satu-satunya perubahan yang kita buat adalah mengatur properti isEditing No.

Seperti yang kita lihat sebelumnya, dalam metode viewDidLoad, kami mengatur tampilan dengan menerapkan metode setupView di mana kita membuat Batalkan dan Simpan tombol. Perhatikan bahwa kita hanya membuat tombol cancel jika properti catatan sama ke nol. Alasannya adalah bahwa kita sekarang Lihat controller modally saat menambahkan catatan baru, tetapi kami mendorong controller pemandangan ke tumpukan navigasi ketika kita mengedit catatan. Jika catatan properti adalah tidak sama dengan nol, kami juga mengisi bidang teks dan tampilan teks dengan isi catatan properti.

Batalkan: metode tidak boleh menahan kejutan.

Simpan: metode sedikit lebih verbose, tetapi tidak boleh terlalu sulit baik. Kami pertama Periksa apakah pemandangan controller catatan properti terletak. Jika sudah diatur maka kita tahu bahwa catatan sedang sedang diedit, tidak diciptakan. Jika properti catatan sama dengan nol kemudian kita tahu bahwa catatan baru harus dibuat. Mengabaikan Lihat controller sedikit rumit karena kita perlu mengabaikan controller Lihat jika itu disajikan modally ketika catatan diciptakan dan pop dari tumpukan navigasi ketika catatan yang telah diedit. Itulah sebabnya kami membuat properti isEditing.

Seperti yang Anda lihat, membuat catatan baru adalah satu-kapal lain dengan menggunakan catatan ajaib. Kami mengisi catatan dengan isi form isian dan menyelamatkan konteks dikelola objek catatan. Mengambil referensi ke konteks dikelola objek menjadi mudah dengan catatan ajaib. Kita perlu lakukan adalah meminta NSManagedObjectContext kelas untuk konteks default. Menyimpan konteks identik dengan menyimpan konteks tanpa catatan ajaib. Meskipun kami log kesalahan jika sesuatu yang tidak beres, ini tidak benar-benar diperlukan karena catatan ajaib akan log kesalahan untuk konsol untuk kita.

Sekarang saatnya untuk mengubah addNote: metode dalam tampilan utama controller. Jangan lupa untuk impor file header kelas MTEditNoteViewController.

Setiap kali catatan baru ditambahkan ke penyimpanan data, kita harus memperbarui tampilan tabel untuk menampilkan perubahan. Untuk aplikasi produksi, pendekatan yang lebih baik akan mengamati perubahan dalam konteks dikelola objek. Namun, dalam aplikasi contoh ini, kita mengambil catatan dari penyimpanan data dan reload tampilan tabel setiap kali muncul tampilan utama (kembali). Ini mahal dan karena itu tidak dianjurkan jika Anda berencana untuk mengirimkan aplikasi Anda ke App Store. Untuk situasi seperti ini, terlalu hasil controller adalah solusi yang sempurna.


Langkah 7: Memperbarui catatan

Memperbarui catatan hampir semudah menambahkan catatan. Seperti yang saya sebutkan sebelumnya, kita akan menciptakan initializer khusus untuk mengatur tampilan controller catatan properti. Memperbarui file header kelas MTEditNoteViewController dengan menambahkan initializer baru seperti yang ditunjukkan di bawah ini. Jangan lupa untuk juga menambahkan pernyataan maju kelas untuk kelas catatan ke header file.

Initializer khusus tidak benar-benar khusus. Semua yang kita lakukan adalah mengatur tampilan controller catatan dan isEditing properti seperti yang Anda lihat di bawah.

Sebelum kami membangun dan menjalankan aplikasi satu kali lagi, kita perlu memperbarui tampilan utama controller tableView:didSelectRowAtIndexPath: metode. Dalam metode ini, kita mengambil catatan benar, menginisialisasi instance kelas MTEditNoteViewController, dan mendorong controller pemandangan ke tumpukan navigasi.


Langkah 8: Menghapus catatan

Untuk menghapus catatan, kita perlu mengubah tableView:commitEditingStyle:forRowAtIndexPath: metode. Kami mengambil catatan, menghapusnya dari sumber data dan konteks dikelola objek, dan memperbarui tampilan tabel. Seperti yang Anda lihat, menghapus catatan atau entitas dari penyimpanan data yang sederhana seperti mengirim pesan deleteEntity.


Menggaruk permukaan

Dengan membangun catatan ajaib, kita hanya menggores permukaan. Saya ingin menekankan bahwa catatan ajaib adalah sebuah perpustakaan yang kuat, matang dan bukan hanya sebuah penggabungan dari beberapa kategori yang berguna. Seperti yang saya tunjukkan kepada Anda, catatan ajaib membuat bekerja dengan Data inti jauh lebih mudah dan lebih verbose. Tugas umum yang sering satu kalimat. Bandingkan kode snippets untuk mengambil semua catatan dan Urutkan mereka tanggal. Menggunakan Data inti ini akan menghasilkan kode snippet berikut.

Menggunakan magis catatan, namun, ini hanya membutuhkan satu baris kode.

Jika kita menambahkan kemampuan untuk mencari daftar catatan, satu pendekatan - meskipun tidak ideal - akan mencari penyimpanan data untuk semua catatan dengan judul atau kata kunci yang terkandung query. Menggunakan catatan ajaib ini akan mengakibatkan pelaksanaan berikut.


Kesimpulan

Seperti saya katakan, catatan ajaib memiliki lebih daripada apa yang saya telah menunjukkan Anda dalam tutorial ini menawarkan banyak. Sejak versi 2.0, catatan ajaib dapat menangani bersarang konteks dan juga menyediakan dukungan untuk iCloud dan ulir operasi. Tujuan utama dari tutorial ini adalah untuk menunjukkan bahwa Data inti tidak harus rumit dan Saul Mora menggambarkan hal ini dengan catatan ajaib.

Advertisement
Did you find this post useful?
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.