0

我是 Core-Data 的新手,所以请帮我解决这个问题。我有这个例外

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an entity named 'ModelForProfile' in this model.'

尽管我搜索了互联网上几乎所有可用的答案并浏览了堆栈上可用的链接,但我似乎没有任何理解。

我有几个(5-7)不同的视图和每个视图上的保存按钮。1.) 我正在使用 Core-Data 来保存 Data.MI 做正确的事??2.)我需要为每个视图有不同的模型??3.)最初我有一个例外,当我浏览网页时知道我需要稍微更改以下方法

- (NSManagedObjectModel *)managedObjectModel
{
    if (__managedObjectModel != nil) {
        return __managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"saveButtonForBasicInfo" withExtension:@"momd"];
    //NSURL *modelURL1 = [[NSBundle mainBundle] URLForResource:@"saveButtonForProfile" withExtension:@"momd"];

    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
  //  __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL1];

    return __managedObjectModel;
}

其中“ saveButtonForBasicInfo ”是第一个模型(第一个视图)的 xcDataModel。

它工作得很好。但是当这个错误发生时,我尝试在更多行中添加几行。如果你能看到注释行。

请帮我解决一下这个。因为我有点困惑。

谢谢你,

此致。

4

1 回答 1

1

一些基本概念:

您的应用程序中通常只有一个NSManagedObjectModel。它描述了您的实体(类似于对象)及其属性(类似于属性)。

此模型在应用启动时初始化,您不必重新访问它。这通常发生在 AppDelegate 设置“核心数据堆栈”中,其中还包括 NSManagedObjectContext 和 NSManagedObjectStoreCoordinator。

您的每个视图都应该使用 NSManagedObjectContext 来访问模型及其数据。您关于不同视图需要不同模型的建议是遥不可及的。

您应该以有意义的方式命名您的各种事物。“saveButtonForBasicInfo”对于模型来说不是一个有意义的名称。称它为“小部件”之类的东西。

类似地,实体应该是“用户”、“约会”、“项目”、“位置”、“类”等,即代表真实事物的事物。“ModelForProfile”是一个非常不合适的实体名称。

于 2013-08-23T09:55:11.887 回答