2014-05-01 29 views
0

我一直在處理核心數據數週,並且一直未能解決若干問題。這是一個簡單的項目,我有兩個實體,每個實體都有幾個屬性。他們有一對多的關係,因爲有幾個任務列表。在添加具有關係的對象時引發的核心數據異常

我能夠正確保存任務列表,所以當我啓動應用程序時,我可以看到我之前添加的任務列表。但是當我嘗試添加任務時,出現錯誤:

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和逆向任務。

+0

建議......假設你的方法'addTaskListRelObject:'在同一個班級,嘗試輸入'[自addTaskListRelObject:newTaskList]',或者,如果該方法是在另一個類,鍵入類的名稱(例如'Task')而不是'self'。 – andrewbuilder

回答

0

對我來說,聽起來像每個對象的.h文件都有問題,並且可能在它們之間的內容與coredata模型中的內容之間存在不匹配。

我也看到了這一點,當在如下.H不包括自動生成的訪問,建議您檢查,這是目前: @interface任務(CoreDataGeneratedAccessors) - (空)addTaskListRelObject:(任務列表*)任務列表; @end

+0

該接口存在,但我只是意識到該參數是一個NSManagedObject而不是TaskList。我沒有注意到,因爲這些文件是由Xcode自動生成的。我會做一些測試,看看會發生什麼。 – gabrielbaca

相關問題