6

我得到一个空结果

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 实体和名称属性。我从 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''
4

4 回答 4

12

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

- (void)viewDidLoad
{

添加这段代码:

id delegate = [[UIApplication sharedApplication] delegate];
    self.managedObjectContext = [delegate managedObjectContext];
于 2013-06-26T22:34:50.943 回答
2

我意识到,由于我在最初创建项目时没有添加核心数据,所以我错过了一些在核心数据选项被勾选时自动生成的代码。因此,当我在网上学习一些教程时,假设这是自动生成的代码。那是我搞砸的地方。

于 2013-05-05T23:54:06.920 回答
1

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

于 2014-11-12T00:54:40.823 回答
0

如果您正在使用使用 NSPersistentContainer 的项目模板,请确保您在 iOS 10+ 上运行它,否则它会在初始化时静默失败并在您执行某种 Core Data 操作时崩溃。

于 2017-03-22T14:30:46.603 回答