我几周来一直在处理核心数据,并且无法解决几个问题。这是一个简单的项目,我有2个实体,每个实体有几个属性。他们有一对多的关系,因为有几个任务列表。
我能够正确保存任务列表,所以当我启动应用程序时,我可以看到我之前添加的任务列表。但是当我尝试添加任务时,我收到错误声明:
2014-05-01 18:28:44.374 Simple Tasks [18627:60b] - [__ NSCFSet entity]:无法识别的选择器发送到实例0x8d55170
这是我用来添加任务的方法:
- (void) addTask: (id) taskInfo taskList: (TaskList *) newTaskList
{
NSManagedObjectContext *context = self.managedObjectContext;
NSDictionary *myTask = (NSDictionary *) taskInfo;
Task *newTask = [NSEntityDescription insertNewObjectForEntityForName:@"Task" inManagedObjectContext: context];
newTask.taskTitle = [myTask objectForKey:@"taskTitle"];
newTask.taskDescription = [myTask objectForKey:@"taskDescription"];
newTask.taskDueDate = [myTask objectForKey:@"taskDueDate"];
newTask.taskDone = [myTask objectForKey:@"taskDone"];
if (newTaskList)
{
[newTask addTaskListRelObject: newTaskList];
}
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
}
这就是抛出异常[newTask addTaskListRelObject: newTaskList];
的行。
此外,这就是我正在检索的任务列表:
NSDictionary *aTask = [[NSDictionary alloc] initWithObjectsAndKeys: self.taskTitleField.text, @"taskTitle", self.taskDescriptionField.text, @"taskDescription", self.taskDueDateField.date, @"taskDueDate", nil];
TaskList *myTaskList = [services searchTaskList: _taskListTitle]; //_taskListTitle is a string
[services addTask: aTask taskList: myTaskList];
我一直在阅读一些核心数据书籍,但我仍然不确定发生了什么。
实体称为TaskList和Task。 TaskList只有一个名为title of string的属性。它有一个称为任务的关系,具有目标任务和反向taskListRel。 "任务"有3个属性:string类型的taskDescription,类型为date的taskDueDate和string类型的taskTitle。它有一个名为taskListRel的关系,它带有目标TaskList和反向任务。
答案 0 :(得分:0)
听起来我的每个对象的.h文件都存在问题,并且可能是它们之间的错误以及coredata模型中的错误匹配。
当自动生成的访问器未包含在.h中时,我也看到了这一点,建议检查是否存在: @interface Task(CoreDataGeneratedAccessors) - (void)addTaskListRelObject:(TaskList *)tasklist; @end