我正在制作一个非常简单的应用来学习核心数据的概念。在这个应用程序中,我的目标是在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
上的保存按钮时,我收到以下消息:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'BasicInfo''
我的代码的相关部分如下:
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;
InputDetailsViewController.m:
#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]; //*
...
}
@end
//*
是应用程序抛出异常的地方。
为了找出问题所在,我做了以下工作:
managedObjectContext
方法使用nil
语句,检查if ()
是否saveFields
。{/ li>
除此之外,我不知道如何找到错误或为什么我的应用程序突然终止。
我真诚地感谢您的意见。
提前谢谢!
答案 0 :(得分:0)
从评论部分:
这就是您收到错误的原因。您需要将self.managedObjectContext分配给AppDelegate中的managedObjectContext。在你这样做之后,你的错误就会消失