无法在Core-Data中保存数据

时间:2013-08-23 09:20:55

标签: ios core-data

我是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(第一个视图)。

它完美无缺。但是当发生这个错误时,我尝试添加一对更多行。 如果你能看到评论的行。

请帮帮我。因为我有点困惑。

谢谢,

最诚挚的问候。

1 个答案:

答案 0 :(得分:1)

一些基本概念:

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

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

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

你应该以有意义的方式命名你的各种事物。 “saveButtonForBasicInfo”对于模型来说不是一个有意义的名称。称之为“Widgets”。

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