2

コアデータに問題があるので、誰かが私を助けてくれることを願っています:)

最初の問題は、次のようなデータモデルがあります。

 Entity P (A) <----> Entity R
  / | \
 / /\ \ 
/ / | \ \
C D E F G

すべてのエンティティは、共通の属性と共通の関係("A"と"R")が必要なため、同じエンティティ"P"から継承します。

私が得ている問題は、継承を使用する場合、コアデータの使用がすべてのエンティティに対して1つのsqliteテーブルのみを生成することです。私の場合、データベースにはすべてのデータに対して1つのテーブルしかないことを意味します。調査を行ったところ、パフォーマンスの問題が発生することがわかりました(さらに、すべてのエンティティ属性は一時的なものであり、willSave中に、それらの値は「A」に格納された1つのNSDataに集約および暗号化されるため、述語を使用してフィルタリングすることはできませんSELECTのパフォーマンスを向上させます)。そこで、「P」を削除し、「A」を「C」、「D」...、「G」に追加することにしました。問題は「R」にあります。これは、以前は逆の関係が1つしかなかったため、新しい種類のエンティティを作成するたびに1つ作成する必要があるためです。だから私はすべての逆の関係を削除したいと思います、出来ますか?時々、nilコンテキストで管理対象オブジェクトを作成する必要があり、後でそれらをコンテキストに挿入します。これが、MOCに挿入する前に非逆を設定した場合、コアデータによって逆の関係が自動的に設定されない理由です。とにかく私は逆を必要としないので、警告が表示されてもそれらを定義することを避けることができますか?

2番目の問題、特定の状況では、新しい「R」を作成し、MOC保存中に「C」、「D」、..、「G」に割り当てる必要があります。だからwillSaveを使いたいのですが、作成したエンティティが保存されるかどうかわかりません。MOCが「insertedObjects」/「updatedObjects」/「deletedObjects」に対して単純なループを実行し、オブジェクトごとにwillSaveを呼び出し、保存を実行してから、didSaveを呼び出す場合、配列を変更することを意味します。これを繰り返しているので、クラッシュすることはありませんか?

4

2 に答える 2

0

コア データは、SQL テーブルのラッパーではありません。オブジェクトグラフとその永続性を扱います。SQLite ストアは、それを永続化する 1 つの方法にすぎません。これをチェックしてください。 コア データがエンティティを 1 つのテーブルに結合しないようにする

于 2012-09-25T05:29:12.150 に答える