CoreData を使用したアプリケーションの作成を始めたばかりですが、MVC フレームワークを使用して (および開発して) Web 開発で多くの作業を行っていたため、MVC の概念に精通しています。
私が収集したものから、CoreData は NSManagedObject から継承するクラスを自動的に生成します。オブジェクトは、コンテキストへのフェッチ要求によって、またはコンテキストに新しいオブジェクトを挿入することによって作成されます。私が見たアプリでは、オブジェクトはデータベース内の属性に対応するプロパティを除いて空であり、基本的にエンティティのテーブルの行を模倣するオブジェクトになっています。
これらの自動的に生成されたクラスと CoreData 自体がアプリケーション モデルを構成していることは理にかなっています。私が伝統的に作ってきたアプリでは、代わりにModel
すべてのデータの処理を担当するクラスがあります。多くの場合、これは Singleton クラスであり、モデルを必要とする各コントローラーは単純に を使用できますself.model = [Model sharedInstance];
。大規模なアプリの場合、1 つの巨大なモデルではなく、複数のモデルが存在する場合があります。あなたは絵を手に入れます。私の最初の質問は次のとおりだと思います:私は正しいですか?CoreData とそれに関連付けられている NSManagedObject は、アプリケーションのモデル全体を構成していますか?
アプリケーションには、CoreData オブジェクトが割り当てられていないデータを処理する他の機能が必要になる場合があるため、これは間違っていると思います。例: CoreData アプリケーションが、foo.com/test から HTTP 要求を介して取得したデータ (JSON データとしましょう) をテーブル ビューに入力する必要があるとします。このデータは CoreData に格納する必要はありませんが、同時に、データの取得と解析はコントローラーの仕事ではないと思います。foo.com からのデータを管理するための HTTP 要求を処理するオブジェクトFooDataManager
(またはそのようなもの) が存在する必要があります (AFHTTPClient を拡張できます)。そして、foo.com を扱うコントローラーにはfooDataManager
、そのコントローラーのモデルとして機能する のプロパティがありますか? そして、コントローラーは[self.fooDataManager retrieveAndParseData];
?を呼び出します。
CoreData アプリの開発を開始する前に、この情報を確認して、最初から正しく実行できるようにしたいと考えています。Web開発では、コントローラーごとに1つのモデルを持つことに慣れていますが、iOSでは、すべてが独自のことを行う多くのモデル、それらのモデルを使用する多くのコントローラー、およびそれらすべてのモデルが追加されているようですCoreData および NSManagedObjects に。