0

私は自分の問題を説明しようとします。

いくつかのボタンがある最初のビューがあります。アプリのボタンを押すと、テーブルビューが開きます。私のプロジェクトにはこれらのファイルがあります:

  • AppDelegate.h/m
  • 最初のビューを制御するための viewcontroller.h/m

  • 最初のビューでそのボタンによって開かれたテーブルビューを制御するための Entity1TableViewController.h/m
  • .xcdatamodel

だから、私がテーブルビューに入るまではすべて正しいです。これ入れた

 NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
 NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
 NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Ditloide" inManagedObjectContext:context]; 

ボタンをタブで押すと、次のエラーが表示されます。

+entityForName: could not locate an NSManagedObjectModel for entity name 'Ditloide' in a second view

私はこのようなものを見つけた他の投稿を読みました:

MainViewController *controller = (MainViewController *)self.window.rootViewController;
controller.managedObjectContext = self.managedObjectContext;

ルートコントローラに配置します。しかし、私の場合、これをどこに置くことができますか?新しいコントローラーを作成する必要がありますか? はいの場合、挿入できません

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法。

では、どうすれば問題を解決できますか?

4

1 に答える 1

0

私はあなたの質問を理解しているかどうか確信が持てません。

このエラーは、MOC を正しく設定していないことが原因です。詳細については、 insertNewObjectForEntityForName:を参照してください。

問題は、コア データ スタックを正しくセットアップしたかどうかです。コードを共有できますか?

次に、ご覧になったコードについては、必要な場所にコンテキストを挿入するという目標があります。たとえばYourController、コンテキストを必要とする というコントローラーがあるとします。YourController次のようなプロパティを作成できます。

//.h
@property (nonatomic, retain) NSManagedObjectContext* context; // or strong if you ARC

//.m
@synthesize context;

次に、アプリ デリゲートなどの別の要素から (そこにコア データ スタックを設定している場合)、それを作成YourControllerして注入するだけです。

YourController* yourCtr = // alloc-init
yourCtr.context = [self managedObjectContext];

最後に、 「はい、- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsメソッドを挿入できません」とはどういう意味ですか?

于 2012-06-18T12:51:11.930 に答える