問題1
例を調べていたとき。appDelegate にすべてのデータが読み込まれていることがわかりました。少量のデータをロードする場合、これがおそらく最良の方法です。しかし、私の場合、それはまだ最善の方法ですか、それとも ViewController レベルでこれを行うべきですか。
そのための appDelegate の使用は、サンプル コードの典型です。
これに対処する最善の方法は、アプリによって厳密に異なります。ビュー コントローラーへのデータ転送をカプセル化することは、アプリ デリゲートを使用する場合と比べて確かに一歩前進です。ただし、アプリによっては、関連するすべての動作をカプセル化するために、より具体的なデータ ロード コントローラーを考案することもできます。確かに、後者のオプションは、比較的単純なプロジェクトでも最適に機能すると思います。
問題 2
アプリケーションを起動したときにコア データの使用を確認したところ、appDelegate で大量のコードが生成されました。しかし、この場合、viewController レベルで managedObjectContext にアクセスできませんよね?
appDelegate.h ファイルを調べると、コントローラーからコア データにアクセスするためのプロパティが見つかるはずです。
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
それを使用して、マネージド オブジェクト コンテキストにアクセスする[UIApplication sharedApplication].delegate
か、そのコードをアプリ デリゲートから独自のモデル マネージャー クラスに分割することができます。繰り返しますが、これはアプリに厳密に依存します。1 つのマネージド オブジェクト コンテキストのみを使用するアプリや、より多くを処理するアプリなどがあります。アプリがコア データの非常に基本的な使用を行う場合は、そのままにしておくことができます。