Tidak ada larik "asli" atau tipe kamus di Data Inti. Anda dapat menyimpan NSArray
atau NSDictionary
sebagai atribut yang dapat ditransformasikan. Ini akan menggunakan NSCoding
untuk membuat serialisasi array atau kamus ke suatu NSData
atribut (dan membatalkan deserialisasi saat akses). Keuntungan dari pendekatan ini adalah mudah. Kelemahannya adalah Anda tidak dapat melakukan query ke dalam array atau kamus (disimpan sebagai BLOB di penyimpanan data) dan jika koleksinya besar, Anda mungkin harus memindahkan banyak data ke / dari penyimpanan data (jika itu adalah penyimpanan data SQLite) hanya untuk membaca atau memodifikasi sebagian kecil dari koleksi.
Alternatifnya adalah menggunakan Data Inti ke-banyak hubungan untuk memodelkan semantik array atau koleksi kamus. Array lebih mudah, jadi mari kita mulai dengan itu. Data inti ke-banyak hubungan benar-benar memodelkan suatu set, jadi jika Anda memerlukan fungsionalitas mirip array, Anda harus mengurutkan set tersebut (menggunakan properti yang diambil adalah cara yang mudah untuk melakukan ini) atau menambahkan atribut indeks tambahan ke entitas yang menyimpan item-item array dan mengelola indeks sendiri. Jika Anda menyimpan array yang homogen (semua entri adalah tipe yang sama), mudah untuk memodelkan deskripsi entitas untuk entitas array. Jika tidak, Anda harus memutuskan apakah akan menggunakan atribut yang dapat ditransformasikan untuk menyimpan data item atau membuat kumpulan entitas item.
Memodelkan sebuah kamus kemungkinan akan membutuhkan hubungan ke-banyak dengan sekumpulan entitas yang menyimpan kunci dan nilai. Kedua kunci dan nilai analog dengan entitas item untuk array, dijelaskan di atas. Jadi mereka bisa berupa tipe asli (jika Anda tahu mereka sebelumnya), atribut yang dapat ditransformasikan atau hubungan ke sebuah instance dari keluarga entitas tipe-spesifik.
Jika ini semua terdengar agak menakutkan, itu benar. Memilih data sewenang-wenang ke dalam kerangka kerja yang bergantung pada skema seperti Core Data itu sulit.
Untuk data terstruktur, seperti alamat, hampir selalu lebih mudah untuk menghabiskan waktu memodelkan entitas secara eksplisit (misalnya atribut untuk setiap bagian dari alamat). Selain menghindari semua kode tambahan untuk memodelkan kamus, ini membuat UI Anda lebih mudah (binding akan "berfungsi") dan logika validasi Anda dll. Jauh lebih jelas karena banyak yang dapat ditangani oleh Core Data.
Memperbarui
Pada OS X 10.7, Core Data mencakup tipe set yang dipesan yang dapat digunakan sebagai pengganti array. Jika Anda dapat menargetkan 10.7 atau lebih baru, ini adalah solusi terbaik untuk koleksi yang dipesan (seperti array).