次のコードを使用して、問題のないパスでViewControllerにコンテキストを渡しましたが、何らかの理由でこのプロジェクトで動作が異なっています。私は、次のしているviewDidLoadメソッドでViewControllerにNSManagedObjectContextコンテキストを渡すことはありません
ProjectListViewController *projectListViewController = [[ProjectListViewController alloc] init];
projectListViewController.context = [self context];
[self.view addSubview:[projectListViewController view]];
:
if (_context != nil) {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Project" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
NSError *error;
self.projects = [_context executeFetchRequest:fetchRequest error:&error];
}
それは_contextが判明
- ユーザーがアクション
私はそうのようなのViewControllerをロードを行い、ありません。
これは私が見つけたものです。
ViewDidLoadメソッドは、[self.view addSubview:[projectListViewController view]]行に到達する前に実行されます。したがって、コンテキストは設定されません。
しかし、私はビューの宣言からinitを削除すると、projectListViewController.context = [自己コンテキスト];実行されるので、コンテキストはnilではありません。
addSubviewが呼び出される前にViewDidLoadが実行されるべきではないと私は間違っていますか?
コンテキストをViewControllerに渡すより良い方法はありますか?
これは間違っていませんが、NSFetchRequestコードをviewWillAppearに移動するとどうなりますか? –
これはうまくいくことを試みましたが、なぜviewDidLoadがaddSubviewの前に呼び出されているのか説明しません。 – Allfocus
私は推測がありませんが、viewDidLoadにブレークポイントを入れてスタックを見ると、手がかりがあるかもしれません。 –