アプリはサプライヤーのリストとそれらのサプライヤーから利用可能な製品のリストを管理することができません。データモデルには、サプライヤと製品という2つのエンティティが含まれています。 (私はそれがビジネスの外に置いてしまった場合、供給者の製品の記録を保持しないよう)CoreDataのSQLite - データが削除されたように見えますが、実際には、それは
サプライヤーは、カスケードに設定削除規則を持つ製品への1対多の関係を持っています。製品にはデフォルトの関係設定があります。
IBには、2台のアレイコントローラがあります。 1つはSupplierエンティティを指し、Parameters:MOCはAppDelegateに、MKP = managedObjectContextにバインドされています。もう1つは、パラメータ:MocがAppDelegateおよびMKP = managedObjectContextにバインドされ、Controller Content:Content Setがサプライヤアレイコントローラにバインドされている、CK =選択およびMKP = name_of_relationのProductエンティティを指します。私はテーブルから追加/削除するには、2サプライヤーと製品のNSTableViews、とボタンを持っているインターフェイスで
。サプライヤを選択すると、特定の製品のみがProductsテーブルに表示されます。製品を削除すると、製品はテーブルから消えます。意図したとおりに動作します。
私はそれは私がCoreDataは実際にSQLiteデータベース内のデータフィールドとテーブルをどのように管理するか見て興味があった日まで、正常に動作していたと思いました。だから私はFirefoxでSQLiteManagerのアドオンを使ってそれを開いて...恐怖!製品が削除されていないことがわかります。データはまだそこにあります!サプライヤへの参照のみが削除されたため、それがテーブルに表示されなくなり、正しく削除されたと思うようになりました。
は私が間違って何をしたのですか? Content Setのバインディングでは何か? ありがとうございました。
ご回答いただきありがとうございます。アプリケーションのsave:メソッドを参照していますか?はい、そこにあり、働いています。たとえば、サプライヤを削除すると、関連するすべての製品を適切にカスケードして削除します。私はFirefoxを使用してチェックし、レコードはもはや存在しません。私はデータモデルの設定をチェックしましたが、何が特別なのでしょう?それほど多くのオプションはありません... –
はい、私は '[managedObjectContext save:&error]'メソッドを参照していました。私はモデルエディタが非常にシンプルであることを知っています、ちょうどそれが二重チェックに良いと思った。 - うーん、それは働いている!私の答えを受け入れることを検討してください。 – Mundi
いいえ、それは働いていません;-)サプライヤを削除すると、その製品はすべて削除されます。しかし、私がプロダクトを単独で削除すると、それは実際には削除されません。私の問題はまだそこにある。私はそれをテストする第二のアプリケーションを作った、最初のものが盗聴されるかもしれないが、まだ問題があると考えている。バインディングとコアデータに関するAppleの文書をもう一度読みました。本当にどこに問題があるのかわかりませんが、ここで間違っていることは間違いありません。 –