NSFetchedResultsController 正在接收关系更改的 didChangeObject?
NSFetchedResultsController is receiving didChangeObject for relationship changes?
我有一个显示 Event
(核心数据支持对象)的 table 视图。我在某处还有另一个 table 显示 Ticket
。活动门票多
当我创建新票证并将其保存到持久存储时,控制 Event
的 table 视图收到 didChangeObject
通知。我不想这样。 table 视图应该关注的实际上没有任何变化。我碰巧 create/change/modify 票,根据 Time Profiler,我通过处理那些 didChangeObject's 在主线程上浪费了一些宝贵的时间。
我调试了一下,好像是这里发生的:
ticket.event = event;
我在该行之前和之后设置断点,po
将 ticket.managedObjectContext.updatedObjects
发送到控制台,一旦我将事件分配给票证,事件就会出现。
现在我将使用以下内容:
- (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,我认为这样做更有意义一个 UIButton
动画到单元格中,按下时将保存上下文,而不是每次 UIStepper
更改时都保存上下文。
我有一个显示 Event
(核心数据支持对象)的 table 视图。我在某处还有另一个 table 显示 Ticket
。活动门票多
当我创建新票证并将其保存到持久存储时,控制 Event
的 table 视图收到 didChangeObject
通知。我不想这样。 table 视图应该关注的实际上没有任何变化。我碰巧 create/change/modify 票,根据 Time Profiler,我通过处理那些 didChangeObject's 在主线程上浪费了一些宝贵的时间。
我调试了一下,好像是这里发生的:
ticket.event = event;
我在该行之前和之后设置断点,po
将 ticket.managedObjectContext.updatedObjects
发送到控制台,一旦我将事件分配给票证,事件就会出现。
现在我将使用以下内容:
- (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,我认为这样做更有意义一个 UIButton
动画到单元格中,按下时将保存上下文,而不是每次 UIStepper
更改时都保存上下文。