Ios 由于未捕获异常而终止应用程序';NSInvalidArgumentException';,原因:'+;entityForName:nil不是合法的NSManagedObjectContext

Ios 由于未捕获异常而终止应用程序';NSInvalidArgumentException';,原因:'+;entityForName:nil不是合法的NSManagedObjectContext,ios,objective-c,xcode,core-data,Ios,Objective C,Xcode,Core Data,我得到的结果为空 AppDelegate.h @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; @property (readonly, strong, nonatomic) NSPersistentStoreCo

我得到的结果为空

AppDelegate.h

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

    @synthesize managedObjectContext = __managedObjectContext;
    @synthesize managedObjectModel = __managedObjectModel;
    @synthesize persistentStoreCoordinator = __persistentStoreCoordinator;

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
          Person *newPerson = [NSEntityDescription
          insertNewObjectForEntityForName:@"Person"
          inManagedObjectContext:self.managedObjectContext];
          .......

    }
我有一个xcdatamodeld文件,其中实体为Person,属性为name。我从NSManagedObject创建了一个Person.h和.m文件

为什么我的输出结果为空

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Person''

我意识到,由于我最初创建项目时没有添加核心数据,因此缺少了一些在勾选“核心数据”选项时自动生成的代码。因此,当我在线学习一些教程时,假设这是自动生成的代码。这就是我搞砸的地方。

在您的viewController.m实现文件中,就在这段代码下面:

- (void)viewDidLoad
{
id delegate = [[UIApplication sharedApplication] delegate];
    self.managedObjectContext = [delegate managedObjectContext];
添加以下代码:

- (void)viewDidLoad
{
id delegate = [[UIApplication sharedApplication] delegate];
    self.managedObjectContext = [delegate managedObjectContext];

确保引发异常时正在运行的代码正在创建托管对象上下文的同一线程上运行。

如果您使用的是使用NSPersistentContainer的项目模板,请确保在iOS 10+上运行此操作,否则它将在初始化时自动失败,并在执行某种核心数据操作时崩溃。

断言MOC。确保上下文不是零。确保妈妈也是你所期望的<代码>断言(self.managedObjectContext)
NSLog(@“%@”,self.managedObjectModel.entitiesByName)断言失败:(self.managedObjectContext),函数-[AppDelegate app是我在断言(self.managedObjectContext)之后得到的;显示创建managedObjectContext的方法。我面临着相同的情况。我手动添加了代码以使用核心数据,现在遇到了与您相同的问题。您可以分享您遵循的教程吗?如果未来的人对此有问题,请查看此处: