2011-08-20 7 views
1

アプリはサプライヤーのリストとそれらのサプライヤーから利用可能な製品のリストを管理することができません。データモデルには、サプライヤと製品という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のバインディングでは何か? ありがとうございました。

答えて

1

私はちょうどこの上でテストを実行し、その結果を完全にSQLiteデータベースから削除された関係エンティティということでした。私はあなたのカスケード設定をIBで正確に確認する必要があると思います。​​の声明があることを確認しましたか?

+0

ご回答いただきありがとうございます。アプリケーションのsave:メソッドを参照していますか?はい、そこにあり、働いています。たとえば、サプライヤを削除すると、関連するすべての製品を適切にカスケードして削除します。私はFirefoxを使用してチェックし、レコードはもはや存在しません。私はデータモデルの設定をチェックしましたが、何が特別なのでしょう?それほど多くのオプションはありません... –

+0

はい、私は '[managedObjectContext save:&error]'メソッドを参照していました。私はモデルエディタが非常にシンプルであることを知っています、ちょうどそれが二重チェックに良いと思った。 - うーん、それは働いている!私の答えを受け入れることを検討してください。 – Mundi

+0

いいえ、それは働いていません;-)サプライヤを削除すると、その製品はすべて削除されます。しかし、私がプロダクトを単独で削除すると、それは実際には削除されません。私の問題はまだそこにある。私はそれをテストする第二のアプリケーションを作った、最初のものが盗聴されるかもしれないが、まだ問題があると考えている。バインディングとコアデータに関するAppleの文書をもう一度読みました。本当にどこに問題があるのか​​わかりませんが、ここで間違っていることは間違いありません。 –

関連する問題