Ios +;entityForName:找不到名为';myModel';在这个模型中,核心数据是什么;她失踪了?

Ios +;entityForName:找不到名为';myModel';在这个模型中,核心数据是什么;她失踪了?,ios,objective-c,xcode,core-data,Ios,Objective C,Xcode,Core Data,我现在正在构建基于核心数据的iOS应用程序,当我试图通过执行[NSEntityDescription InsertNewObjectForEntityForName:@“myModel”inManagedObjectContext:_managedObjectContext]插入新的托管对象时在AppDelegate.m中,我得到了标题上描述的错误 这是我的AppDelegate.h文件: #import @interface AppDelegate : UIResponder @pr

我现在正在构建基于核心数据的iOS应用程序,当我试图通过执行
[NSEntityDescription InsertNewObjectForEntityForName:@“myModel”inManagedObjectContext:_managedObjectContext]插入新的托管对象时
AppDelegate.m
中,我得到了标题上描述的错误

这是我的
AppDelegate.h
文件:


#import 

@interface AppDelegate : UIResponder 

@property (strong, nonatomic) UIWindow *window;

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

// maybe required?
//@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;

@end
这是我的
AppDelegate.m
文件(仅显示相关部分):

在这个应用程序中,我想使用tabbar控制器作为根视图控制器,当应用程序启动时,我想使用导航控制器作为tabbar控制器的根视图控制器,并使用tableview控制器作为导航控制器的根视图控制器。在表视图控制器中,我想使用核心数据功能向用户显示许多实体

如果我在
NSLog()
输出的确切位置使用断点,它不会返回任何错误。当我向前移动一行以输出日志消息时,以下输出返回:


() isEditable 0, entities {
}, fetch request templates {
}
这意味着由于某些原因我没有实体

那么,为什么在这种情况下没有实体?从这里开始,我没有拼错我的实体名称。此外,我的objectModelContext未设置为nil。那么,我是否设置了错误的托管对象?我是否在
didsfinishlaunchingwithoptions
method的前三行做错了什么

或者是什么原因导致了这个问题?或者我错过了什么

我使用iOS 7和Xcode 5,在我的实体中没有任何托管对象——毕竟,当我尝试实例化这些托管对象时发生了错误


谢谢。

如上所述,您可能需要检查您的
ManagedObjectModel
是如何初始化的

我个人建议避免将核心数据代码直接放在你的应用程序代理中——我认为苹果的模板做得不太好。作为一个很好的示例,可以查看设置核心数据堆栈所需的最少代码量,以及每个部分的功能的简要说明

关于您的额外注释问题-只要访问
managedObjectContext
属性,就会调用您的
managedObjectContext
方法。因此,当您这样做时:

listcontroller.managedObjectContext = self.managedObjectContext;

这将调用
self
上的
managedObjectContext
方法,该方法(如果我没记错的话)将初始化您的上下文。

您可以发布创建
ManagedObjectModel
的代码?我不明白您的意思。是通过写入
@属性(只读、强、非原子)NSManagedObjectModel*ManagedObjectModel自动创建的
ManagedObjectModel
@synthesis managedObjectModel=\u managedObjectModel在实现文件中,对吗?不-所以这些行只声明
ManagedObjectModel
属性。您需要代码来初始化/创建实际模型。默认情况下,Xcode会将其放入AppDelegate中的一个方法中。我不知道如何初始化
ManagedObjectModel
。启动应用程序时会调用
AppDelegate.m
中的方法
-(NSManagedObjectContext*)managedObjectContext
,对吗?那么,你是对的,编辑它的方法使我的应用程序现在可以工作了。实际上,我从另一个模板复制并粘贴了它的代码,因为正如我所说的,我必须使用tabbar controller作为根(默认情况下没有核心数据),并且没有将其模型名称更改为新的。那么,您能告诉我一件事吗?在
应用程序中:didFinishLaunchingWithOptions:
方法,未调用
managedObjectContext
方法。那么,在应用程序中何时何地调用它呢?
listcontroller.managedObjectContext = self.managedObjectContext;