gpt4 book ai didi

objective-c - insertNewObjectForEntityForName :

转载 作者:太空狗 更新时间:2023-10-30 03:25:40 25 4
gpt4 key购买 nike

我使用 Xcode .xcdatamodel 文件编辑器设置了一个实体。我创建了一个名为 Person 的实体,添加了一些属性,然后生成了一个 .m 文件来表示它。一切正常。

现在当我去写一行代码时:

  Person * person = (Person*)[NSEntityDescription                        insertNewObjectForEntityForName:@"Person"                        inManagedObjectContext:managedObjectContext];

然后我得到:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Person''

虽然我完全按照 Location 示例,我相信一步一步,但我认为我一定错过了某种关键的“注册”步骤,我告诉 Xcode 我的 Person 实体应该可以访问.. 而且我根本没有办法“初始化”managedObjectContext,Location 示例似乎也没有这样做。

最佳答案

您没有设置 MOC 几乎可以肯定是问题所在。最具体地说,这意味着您可能没有加载定义 Person 的 MOM(托管对象模型)。在你的代码中的某个地方,你应该有这样的东西:

managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];    

像这样的:

persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

像这样的:

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator: coordinator];

我只是从 Core Data 模板的 AppDelegate 中复制行(如果你创建一个使用 Core Data 的新应用程序,你会得到什么)。

如果您拥有所有这些,请确保您的 xcdatamodel 列在构建的编译源步骤中。当然还要确保 Person 实际上是您的 xcdatamodel 中的实体名称。实体名称与类不同,尽管它们通常设置为相同。

关于objective-c - insertNewObjectForEntityForName :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com