4

私はしばらく Core Data を使用してきましたが、自分自身に質問をしたところです。私自身は常に、Core Data モデルを管理する何らかのローカル ストア クラスを作成する傾向があります。これは、参照を持つシングルトン クラスになります。管理対象オブジェクトのコンテキストには、新しい管理対象オブジェクトの作成、オブジェクトの削除、保存などのメソッドがあります。管理対象オブジェクトのサブクラスは、実際には単なるモデルです。

しかし、私はしばしば他の人々のプロジェクトにも携わってきました。他の開発者は、管理対象オブジェクトのサブクラスにクラス メソッドの形式でより多くのロジックを追加する傾向があり、コア データの「ラッパー」クラスが非常に単純であるか、まったくない場合があります。

たとえば、私は通常、次のようなことをします。

User *me = [[MyDataStore getInstance] createUserWithName:@"Daniel"];

他の人はむしろ持っています:

User *me = [User userWithName:@"Daniel"];

明らかに後者の方がはるかに優れており、私の意見ではより人間に優しいですが、多くの断片化されたコードで終わる可能性がありますが、一方で、私の解決策は、非常に大きなファイルが 1 つあることを意味します。一定の長さ。

他の人がこれについて彼らの見解を共有できるかどうか疑問に思いました。ありがとう。

4

1 に答える 1

4

MVC の観点からは、論理コードを NSManagedObject サブクラスに配置する方がより適切です。個人的には、より論理的なことだと思います。つまり、このコードは User の新しいインスタンスを作成するので、それを User クラスに配置します。

実際のレベルでは、以前は NSManagedObject サブクラスにロジック コードを配置するのが嫌いでした。モデルを変更するとすべてが消えてしまうからです。しかし、現在はMoGeneratorを使用してすべてを処理しているため、カスタム ロジックが次のようになることを心配する必要はありません。オーバーライドされます。

私が最近 CoreData で活用しようとしているもう 1 つのことは、抽象エンティティです。モデルを単純化するだけでなく、カスタム ロジックにも最適です。基本的には、CoreData をサブクラス化するだけです。

私の意見と現時点で何がうまくいくか、それが誰かの助けになることを願って、他の貢献を楽しみにしています!

于 2012-07-18T04:22:59.917 に答える