読者です 読者をやめる 読者になる 読者になる

Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

could not locate an NSManagedObjectModel for entity nameというエラーが出たら

エンティティ名間違ってねーよっていう時に。

CoreDataのアーキテクチャ的にアプリ開発者はNSManagedObjectContextクラスのオブジェクトを経由して利用します。

その際に画面表示として多くはTableViewControllerを利用すると思いますが、こいつにはmanagedObjectContextというプロパティがありまして、CoreDataを経由して利用するオブジェクトの参照をセットしないと、エンティティがあってもオブジェクトの参照が渡っていないのでそんなエンティティありませんという話になるようです。

なので、こんな感じで。

//YourApplicationDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Override point for customization after application launch.
	CGRect bounds = [[UIScreen mainScreen] bounds];
	window = [[UIWindow alloc]initWithFrame:bounds];
	TopMenuController *topMenu = [[TopMenuController alloc] initWithStyle:UITableViewStylePlain];
        //ココ!
	topMenu.managedObjectContext = [self managedObjectContext];  
	navi = [[UINavigationController alloc] initWithRootViewController:topMenu];
	[topMenu release];
	[window addSubview:navi.view];
    [window makeKeyAndVisible];

    return YES;
}

ご参考になれば。