NSFetchedResultsChangeUpdate更改类型何时发生?

| 我想知道何时通过
controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
方法中的
NSFetchedResultsChangeUpdate
更改类型? 我用非零的
sectionNameKeyPath
创建了
NSFetchedResultsController
并获取了具有
sortDescriptor
的请求。添加了一些与提取的请求谓词匹配的对象。然后,我尝试更改该对象之一的sort属性和
sectionNameKeyPath
属性。实际上,它工作得很好:每次我收到
NSFetchedResultsChangeMove
更改类型时,更改的对象都会在tableView周围移动,但是!更改该对象的其他道具(不用于排序或分区)根本不会触发ѭ1! 我对ѭ0感兴趣的原因是,当已获取对象的某些属性在与ѭ10匹配的范围内发生变化时,我希望ѭ2通知我。例如,谓词将某些实体的对象与“ 11”匹配。但我也想在此类匹配对象之一将其
prop
值从1更改为2时得到通知。 只是不想创建两个
NSFetchedResultsController
,因为我相信有一种更优雅的方法。 +
NSFetchedResultsChangeUpdate
变更类型是我对
NSFetchedResultsController
仍然唯一发现的一个谜-从未发现。     
已邀请:
        当我创建第二个托管对象上下文时,使用相同的持久性存储,编辑对象的值,然后将上下文保存到持久性存储中,便会收到此“ 16”值。 (如果您更改了排序的名称,则会得到您所说的
ChangeMove
值。)
- (void)controller:(NSFetchedResultsController *)controller 
   didChangeObject:(id)anObject
       atIndexPath:(NSIndexPath *)indexPath 
     forChangeType:(NSFetchedResultsChangeType)type
      newIndexPath:(NSIndexPath *)newIndexPath {

 …
        case NSFetchedResultsChangeUpdate:
          [self configureCell:[tableView cellForRowAtIndexPath:indexPath] 
                      inTable:tableView 
                  atIndexPath:indexPath];
        break;
 …
changed19ѭ=changed20ѭ相关更改对象的子类
indexPath
=相关指标
newIndexPath
=
nil
(我创建第二个上下文的原因是针对各种用例;一个案例:““新foo对象””,用户摆弄了各种拥有的关系,然后点击取消,我只是破坏了上下文,不需要撤消管理)     

要回复问题请先登录注册