Saya sedang dalam proses menambahkan data inti ke aplikasi iPad saya. Prosedur umum saya adalah menguji kode dengan memasukkannya ke dalam delegasi aplikasi. Ketika saya puas bahwa kode saya telah diuraikan dengan benar, saya memindahkannya ke metode yang sesuai di tempat lain di aplikasi. Sejauh ini cara ini berhasil dengan menambahkan objek. Tapi saya mengalami masalah saat menghapus objek. Saya dapat menghapusnya dengan baik dari delegasi aplikasi dengan memilih dan menghapusnya, dan saat ini saya menghapus semuanya saat aplikasi dimulai hanya untuk menjaga database tetap bersih sampai kode data inti berfungsi.
Cukup sekian alur kerja saya. Masalah yang saya alami sekarang adalah menghapus objek dari tempat yang sesuai. Mari kita lihat apakah saya dapat menjelaskan secara singkat pengaturan saya.
Saya memiliki dua kelas, sebut saja Car
dan Tire
demi diskusi ini. Saya tidak tahu apa konvensi itu, jadi saya membuat konvensi saya sendiri, yaitu menambahkan C_
di awal nama objek Data Inti terkait untuk menyimpan objek yang terkait dengan objek tersebut. Jadi saya punya dua kelas tambahan, C_Car
dan C_Tire
. Setiap mobil dapat mempunyai beberapa ban, sehingga Car
mempunyai properti tires
, yaitu NSSet
dari Tire *
. Selain itu Car
memiliki properti bernama CarCD
bertipe C_Car *
, dan Tire
memiliki properti bernama TireCD
bertipe C_Tire *
sehingga setiap objek dapat melacak objek data inti terkait (CD untuk data inti).
Xcode membangun metode kenyamanan untuk menambah atau menghapus objek. Diantaranya adalah cara menambahkan ban pada mobil. Saya menggunakannya sebagai berikut:
tire.tireCD = tireCD; //tire is an object of type Tire *, and tireCD is an object of type C_Tire *.
[self.carCD addTireObject:tireCD];//self.carCD is a property in my view controller of type CarCD *, and tireCD is a local object of type TireCD *.
Selain itu, ada cara praktis melepas ban dari mobil, - (void)removeTireObject:(C_Tire *)value;
. Saya pikir di mana pun di pengontrol tampilan tempat saya memiliki:
[tireObject removeFromSuperview];//tireObject is a (Tire *) object.
Saya hanya akan mengubahnya menjadi:
[carObject removeTireObject:tireObject.tireCD];
[tireObject removeFromSuperview];
Baris pertama harus menghapus objek dari NSSet
pada objek data inti. Baris kedua menghapus objek dari objek mobil yang digunakan dalam aplikasi.
Masalahnya adalah, saya tidak melihat SQL apa pun dihasilkan di jendela debugger ketika kode ini dijalankan. Apakah saya melewatkan sesuatu?
Selain itu, jika Anda ingin mengomentari konvensi penamaan, sekaranglah saatnya bagi saya untuk mengadopsi apa pun yang konvensional.
deleteObject:tire
akan secara otomatis melepas ban dari objek mobil jika Aturan Penghapusan Data Inti diatur ke Nullify.) - person Martin R   schedule 29.06.2013[carObject removeTireObject:tireObject.tireCD];
. - person Victor Engel   schedule 29.06.2013