2011-10-11 62 views
0

我製作了一個名爲「狀態」的實體的數據模型。我還創建了適當的類,以便我可以使用該屬性來獲取屬性。但它似乎並不像我的應用程序可以找到我的數據模型:S未找到核心數據實體名稱

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:   (NSDictionary *)launchOptions 
{ 
    // Database test. 
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext; 
    Blabla *t = [NSEntityDescription insertNewObjectForEntityForName:@"Status"  inManagedObjectContext:managedObjectContext]; 

我把相關的代碼了。它停在最後一行給我這個錯誤:

+ entityForName:找不到在這個模型中名爲「狀態」的實體。

我再次檢查名稱。我真的有一個名爲Status的實體。我不明白:S我也檢查數據模型是否在我的編譯源代碼中。這是...

謝謝...

回答

0

因爲它看起來像這是運行就像應用程序啓動,我在你創建之前猜測你沒有設置你的管理對象模型和你的持久存儲區協調員在的NSManagedObjectContext ...

所以你可以試試:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myModel" withExtension:@"momd"]; 
NSManagedObjectModel* managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
NSURL *dbURL = [documentsDirectory URLByAppendingPathComponent:@"myModel.sqlite"]; 

NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel]; 
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:dbURL options:nil error:&error]) { 
    // handle error 
} 

NSManagedObject *managedObjectContext = [[NSManagedObjectContext alloc] init]; 
[managedObjectContext setPersistentStoreCoordinator:coordinator]; 
Blabla *t = [NSEntityDescription insertNewObjectForEntityForName:@"Status" inManagedObjectContext:managedObjectContext]; 

... 

(release everything when you are done) 

當然,在實際應用中,你可能會想在應用程序委託屬性或實例變量保持周圍這些並釋放他們方法dealloc

+0

感謝您的回答,但我已經在我的appDelegate中有該代碼。但我發現問題的解決方案^^我的模型必須具有與我的應用程序完全相同的名稱...我將它稱爲數據.... momd這是不一樣的:)我也可以在模型中更改它方法^^ – WYS

+1

我很高興你解決了你的問題,但我確信數據模型不需要與你的應用程序具有相同的名稱... –

0

我知道這是舊的,但我相信這是模型配置的問題。如果有人看到這篇文章,請檢查該實體是否處於「默認」配置,或者如果您添加了其他配置,請確保所討論的實體已添加到正確的配置中。