Xcode ';无法识别的选择器发送到实例';将数据保存到核心数据时

Xcode ';无法识别的选择器发送到实例';将数据保存到核心数据时,xcode,core-data,Xcode,Core Data,我有两个班,品牌和产品。品牌具有以下属性:名称和产品与产品的关系(一对多);而产品有属性:名称和关系(一对一)品牌对品牌 以下是错误发生的方式: 有两个品牌Brand1和Brand2。当我保存P1,P2时。。。对于Brand1来说,它工作得很好。但如果我试图将新产品保存到Brand2,则会显示错误: -[Brand compare:]:无法识别的选择器发送到实例 我找了整整一个下午的原因,没有结果。有人知道如何解决这个问题吗 以下是添加新产品的代码: - (void)addProduct:(

我有两个班,品牌和产品。品牌具有以下属性:名称和产品与产品的关系(一对多);而产品有属性:名称和关系(一对一)品牌对品牌

以下是错误发生的方式:
有两个品牌Brand1和Brand2。当我保存P1,P2时。。。对于Brand1来说,它工作得很好。但如果我试图将新产品保存到Brand2,则会显示错误:
-[Brand compare:]:无法识别的选择器发送到实例

我找了整整一个下午的原因,没有结果。有人知道如何解决这个问题吗

以下是添加新产品的代码:

  - (void)addProduct:(NSString *)name brandOfProduct:(Brand *)brand
  {
      Product *newProduct = [NSEntityDescription insertNewObjectForEntityForName:@"Product" inManagedObjectContext:self.coreDataManager.managedObjectContext];
      newProduct.name = name;
      [brand addProductsObject:newProduct];
      NSError *error;
      [self.coreDataManager.managedObjectContext save:&error];
  }
此处的“品牌”是指在选择器视图中选择的一个用户

Brand *brand = [[self.fetchedResultsController fetchedObjects] objectAtIndex:row];
更新1:
[self.coreDataManager.managedObjectContext保存:&error]时显示错误将新产品保存到Brand2

错误消息:
CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获异常。这通常是NSManagedObjectContextObjectsIDChangeNotification的观察者中的错误-[品牌比较:]:无法识别的选择器发送到实例0x1092d97a0,带有userInfo(null)

更新2:我找到了导致此错误的原因:

  - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
  {
      [self.tableView beginUpdates];
  }

  - (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
   atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
  newIndexPath:(NSIndexPath *)newIndexPath
  {
      UITableView *tableView = self.tableView;

      switch(type) {
          case NSFetchedResultsChangeInsert:
              [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
              break;

          case NSFetchedResultsChangeDelete:
              [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
              break;

          case NSFetchedResultsChangeUpdate:
              [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
              break;

          case NSFetchedResultsChangeMove:
              [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
              [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
              break;
      }
  }

  - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
  {
      [self.tableView endUpdates];
  }

您应该显示一些代码。@Volker抱歉,这是我的代码,请看一看。异常的堆栈跟踪是什么?你是否自动生成了这些类?关系是否相反?您是否确保brand确实是一个
brand
对象,以及您是否在主线程上运行?错误到底在哪里抛出?@Wain是的,它们是自动生成的,并且关系是相反的<代码>CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获异常。这通常是NSManagedObjectContextObjectsIDChangeNotification的观察者中的一个错误。
这就是错误所在。