添加具有关系的对象时抛出的Core Data异常

时间:2014-05-01 23:41:01

标签: objective-c core-data ios7 xcode5.1

我几周来一直在处理核心数据,并且无法解决几个问题。这是一个简单的项目,我有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和反向任务。

1 个答案:

答案 0 :(得分:0)

听起来我的每个对象的.h文件都存在问题,并且可能是它们之间的错误以及coredata模型中的错误匹配。

当自动生成的访问器未包含在.h中时,我也看到了这一点,建议检查是否存在: @interface Task(CoreDataGeneratedAccessors) - (void)addTaskListRelObject:(TaskList *)tasklist; @end