未找到核心数据实体名称
问题描述:
我制作了一个名为“状态”的实体的数据模型。我还创建了适当的类,以便我可以使用该属性来获取属性。但它似乎并不像我的应用程序可以找到我的数据模型:S未找到核心数据实体名称
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
// Database test.
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
Blabla *t = [NSEntityDescription insertNewObjectForEntityForName:@"Status" inManagedObjectContext:managedObjectContext];
我把相关的代码了。它停在最后一行给我这个错误:
+ entityForName:找不到在这个模型中名为“状态”的实体。
我再次检查名称。我真的有一个名为Status的实体。我不明白:S我也检查数据模型是否在我的编译源代码中。这是...
谢谢...
答
因为它看起来像这是运行就像应用程序启动,我在你创建之前猜测你没有设置你的管理对象模型和你的持久存储区协调员在的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
。
答
我知道这是旧的,但我相信这是模型配置的问题。如果有人看到这篇文章,请检查该实体是否处于“默认”配置,或者如果您添加了其他配置,请确保所讨论的实体已添加到正确的配置中。
感谢您的回答,但我已经在我的appDelegate中有该代码。但我发现问题的解决方案^^我的模型必须具有与我的应用程序完全相同的名称...我将它称为数据.... momd这是不一样的:)我也可以在模型中更改它方法^^ – WYS
我很高兴你解决了你的问题,但我确信数据模型不需要与你的应用程序具有相同的名称... –