NSFetchedResultsController接收didChangeObject以进行关系更改?

时间:2016-01-30 19:27:10

标签: objective-c core-data nsfetchedresultscontroller

我有一个显示Event(核心数据支持对象)的tableview。我在另一张桌子上显示Ticket。活动有很多门票。

当我创建新故障单时,将其保存到持久性存储中,控制Event的tableview会收到didChangeObject通知。我不想要它。表视图应该关注的实际上没有任何改变。我碰巧创建/更改/修改了相当多的门票,根据Time Profiler,我通过处理那些didChangeObject来减少主线程上的宝贵时间。

我调试了它,似乎发生在这里:

ticket.event = event;

我在该行之前和之后设置了断点,poticket.managedObjectContext.updatedObjects添加到控制台,一旦我将事件分配给故障单,就会显示该事件。

1 个答案:

答案 0 :(得分:0)

现在我将使用以下内容:

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  self.fetchedResultsController.delegate = self;
  NSPredicate *predicate = [NSPredicate predicateWithFormat:@"end_date >= %@", [NSDate date]];
  self.fetchedResultsController.fetchRequest.predicate = predicate;

  NSError *error;
  BOOL success = [self.fetchedResultsController performFetch:&error];
  if (!success)
    NSLog(@"ERROR: performing fetch: %@", error);

  [self.tableView reloadData];
}

- (void)viewWillDisappear:(BOOL)animated
{
  [super viewWillDisappear:animated];
  // we are not interested in changes when this view is offscreen
  self.fetchedResultsController.delegate = nil;
}

虽然长期我正在研究只在用户想要提交更改时保存上下文的解决方案,因为我在单元格中有一堆 - / + UISteppers,而且我认为有一个{更有意义{1}}动画进入按下的单元格,将保存上下文,而不是每次UIButton更改时保存上下文。