Ios 我的应用程序中的核心数据存在问题
我正在制作一个非常简单的应用程序来学习核心数据的概念。在这个应用程序中,我的目标是在tableView中显示人员列表 我从一个空的应用程序开始,确保勾选了核心数据和ARC。我还设法创建了*.xcdatamodeld、*.storyboard和*.h/m文件来编程视图/功能 在应用程序中,如果用户单击Ios 我的应用程序中的核心数据存在问题,ios,core-data,Ios,Core Data,我正在制作一个非常简单的应用程序来学习核心数据的概念。在这个应用程序中,我的目标是在tableView中显示人员列表 我从一个空的应用程序开始,确保勾选了核心数据和ARC。我还设法创建了*.xcdatamodeld、*.storyboard和*.h/m文件来编程视图/功能 在应用程序中,如果用户单击MainScreenViewController导航栏上的+按钮,应用程序将打开另一个viewController(InputDetailsViewController),让用户输入姓名、电话号码、电
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;
@结束
/*
是应用程序抛出异常的地方
为了找出问题所在,我执行了以下操作:
saveFields
方法中的if()
语句检查managedObjectContext
是否为nil
提前谢谢你 从评论部分:
这就是为什么会出现错误。您需要将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]; //*
...
}