Ios 我的应用程序中的核心数据存在问题

Ios 我的应用程序中的核心数据存在问题,ios,core-data,Ios,Core Data,我正在制作一个非常简单的应用程序来学习核心数据的概念。在这个应用程序中,我的目标是在tableView中显示人员列表 我从一个空的应用程序开始,确保勾选了核心数据和ARC。我还设法创建了*.xcdatamodeld、*.storyboard和*.h/m文件来编程视图/功能 在应用程序中,如果用户单击MainScreenViewController导航栏上的+按钮,应用程序将打开另一个viewController(InputDetailsViewController),让用户输入姓名、电话号码、电

我正在制作一个非常简单的应用程序来学习核心数据的概念。在这个应用程序中,我的目标是在tableView中显示人员列表

我从一个空的应用程序开始,确保勾选了核心数据和ARC。我还设法创建了*.xcdatamodeld、*.storyboard和*.h/m文件来编程视图/功能

在应用程序中,如果用户单击
MainScreenViewController
导航栏上的
+
按钮,应用程序将打开另一个viewController(
InputDetailsViewController
),让用户输入姓名、电话号码、电子邮件和标签。当用户单击“保存”按钮时,应用程序将保存数据并在上一个viewController(
MainScreenViewController
)的表格上显示输入的信息

为了管理数据,我创建了两个实体:
BasicInfo
DetailedInfo
BasicInfo
有两个属性:
name
phone
和关系:
details
连接到目标
DetailedInfo
。类似地,
DetailedInfo
有两个属性:
email
tag
和关系:
basic
连接到
BasicInfo
。一旦定义了这些属性和关系,我就为每个实体创建了
NSManagedObject
子类

我还设法创建了字段,以便在上述属性中输入信息。但当我按下
InputDetailsViewController
上的save按钮时,我会收到以下消息:

***由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“+entityForName:找不到实体名称“BasicInfo”的NSManagedObjectModel

我的守则的有关章节如下:

InoutDetailsViewController.h:

#import <UIKit/UIKit.h>
#import "BasicInfo.h"
#import "DetailedInfo.h"

@interface InputDetailsViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *phoneField;
@property (weak, nonatomic) IBOutlet UITextField *emailField;
@property (weak, nonatomic) IBOutlet UITextField *tagField;
@property (nonatomic,strong) NSManagedObjectContext* managedObjectContext;

- (IBAction)closeKeyboard;
- (IBAction)saveFields;
@结束

/*
是应用程序抛出异常的地方

为了找出问题所在,我执行了以下操作:

  • 我将我的代码与raywenderlich教程中的源代码进行了比较(http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started 和其他3个教程)
  • 使用
    saveFields
    方法中的
    if()
    语句检查
    managedObjectContext
    是否为
    nil
  • 确保xcdatamodeld中的拼写与文件中的变量相同
  • 除此之外,我不知道如何找到错误,也不知道为什么我的应用程序突然终止

    我衷心感谢你的意见


    提前谢谢你

    从评论部分:


    这就是为什么会出现错误。您需要将self.managedObjectContext分配给AppDelegate中的managedObjectContext。执行此操作后,错误应该消失

    查看方法-(NSManagedObjectModel*)managedObjectModel的内部。查找以NSURL*modelURL=….开头的行。。。。URLForResource中输入的名称是否与您的核心数据模型名称匹配?@YesterBunny:是的。如果有帮助的话,你想看看整个程序吗?也许以后吧。-(NSManagedObjectModel*)managedObjectModel在哪里?在你的应用程序中?如何在InputDetailsViewController中分配self.managedObjectContext?
    -(NSManagedObjectModel*)managedObjectModel
    位于
    AppDelegate
    中。我没有回答您的最后一个问题。我没有在
    InputDetailsViewController
    中的任何位置分配
    self.managedObjectContext
    。我不知道我是否回答了你的问题。
    #import "InputDetailsViewController.h"
    
    @interface InputDetailsViewController ()
    @end
    
    @implementation InputDetailsViewController
    
    @synthesize nameField, phoneField, emailField, tagField;
    @synthesize managedObjectContext;
    
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    
    - (IBAction)closeKeyboard
    {
        [nameField resignFirstResponder];
        [phoneField resignFirstResponder];
        [emailField resignFirstResponder];
        [tagField resignFirstResponder];
    }
    
    - (IBAction)saveFields
    {
        if (self.managedObjectContext == nil) {
        NSLog(@"NSManagedObjectContext is nil");
        }
    
        BasicInfo *basicInfo = (BasicInfo *)[NSEntityDescription insertNewObjectForEntityForName:@"BasicInfo" inManagedObjectContext:managedObjectContext]; //*
        DetailedInfo *detailedInfo = (DetailedInfo *)[NSEntityDescription insertNewObjectForEntityForName:@"DetailedInfo" inManagedObjectContext:managedObjectContext]; //*
    
    ...
    }