0

Core Data は、モデルを操作するのに簡単ではありません。

Core Data を使用する前に、単純な sqlite3 データベースを使用して、割り当てたオブジェクトを操作し、必要に応じて変更します。

しかし、Core Data では、エンティティを変更したり、エンティティを作成したコンテキストを削除したりすると、アプリケーションの調整にとって非常に危険です。

私の質問は簡単です。エンティティを安全に操作するにはどうすればよいですか?

永続ストアの保存、削除、更新、およびフェッチのためだけにエンティティを使用しますか、それともエンティティに関数を記述して実際のオブジェクトのように使用しますか?

たとえば、多くのオーバーレイを含むマップがあり、各オーバーレイにはプレーヤーがあります。MyAppPlayer: Models、Player: Entity、MyAppOverlay: Models、Overlay:Entity の 4 つのオブジェクトを作成しました。MyAppPlayer はエンティティをロードして保存しますが、それは良い習慣ですか? いいえの場合、どうしますか?

4

2 に答える 2

2

Core Data はデータベースではなく、オブジェクト グラフです。

コア データは、オブジェクトの永続性を維持するための単なるバックボーンと考える必要があります。永続ストアにはデータが含まれ、カスタム クラスには機能が含まれます。

はい、クラス ファイルにカスタム機能を追加してください。それが彼らがここにいる目的です。

ただし、概念を理解していることを確認してください。「コンテキストを削除」しません。これは単に、データ操作のための便利な「スクラッチパッド」です。コンテキストをコントローラーに渡して、コントローラーがデータにアクセスして操作できるようにします。

あなたの場合、「モデル」と「エンティティ」を区別する必要はありません。エンティティは実際にモデルの一部です (NSManagedObjectModel で定義されているように)。それは非常に簡単です: データ ソースとしてカスタム エンティティに依存するマップ オーバーレイを作成します。

于 2013-04-22T14:36:10.420 に答える
1

エンティティをテーブル、属性を列と考えてください。リレーションシップ (1 対多、多対多など) も非常に似ています。これは、CoreData が永続ストアとして SQLite を使用しているためです。エンティティは、複数の属性と関係を持つことができます。SQL に精通している場合、これはすべて理にかなっているはずです。SQLite ストア ファイルを開いて、CoreData がどのように整理されているかを確認して、混乱を解消することができます。

于 2013-04-22T14:11:23.440 に答える