我一直在處理核心數據數週,並且一直未能解決若干問題。這是一個簡單的項目,我有兩個實體,每個實體都有幾個屬性。他們有一對多的關係,因爲有幾個任務列表。在添加具有關係的對象時引發的核心數據異常
我能夠正確保存任務列表,所以當我啓動應用程序時,我可以看到我之前添加的任務列表。但是當我嘗試添加任務時,出現錯誤:
2014-05-01 18:28:44.374簡單任務[18627:60b] - [__ NSCFSet實體]:發送到實例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只有一個名爲string類型的屬性。它與目標任務和逆taskListRel有一個稱爲任務的關係。 「任務」具有3個屬性:類型爲string的taskDescription,類型爲date的taskDueDate和類型爲string的taskTitle。它有一個叫taskListRel的關係,帶有目標TaskList和逆向任務。
建議......假設你的方法'addTaskListRelObject:'在同一個班級,嘗試輸入'[自addTaskListRelObject:newTaskList]',或者,如果該方法是在另一個類,鍵入類的名稱(例如'Task')而不是'self'。 – andrewbuilder