gpt4 book ai didi

objective-c - 为什么在发送 NSFetchedResultsChangeDelete 事件的核心数据中更改记录?

转载 作者:行者123 更新时间:2023-12-03 16:47:26 24 4
gpt4 key购买 nike

我有一个实现 NSFetchedResultsControllerDelegate 的 UITableViewController。在

- (NSFetchedResultsController *)fetchedResultsController 

我正在从实体加载记录。现在,当我更新该实体中的记录时,NSFetchedResultsChangeType 总是 NSFetchedResultsChangeDelete 并删除我的对象。我认为它应该只是更新,因为我正在更新记录而不是删除它。
- (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:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;

case NSFetchedResultsChangeDelete:
NSLog(@"object deleted %d",
indexPath.row);
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;

case NSFetchedResultsChangeUpdate:

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

case NSFetchedResultsChangeMove:
NSLog(@"object moved %d",
indexPath.row);
[tableView deleteRowsAtIndexPaths:[NSArray
arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView insertRowsAtIndexPaths:[NSArray
arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
}}

编辑 1:

当我第一次保存对象时,它似乎也没有插入。事实上,当时 didChangeObject 甚至没有被解雇。

编辑 2

更多信息:
我对不同的谓词使用同一张表。我有一个 Split View,左右 View 都是表格 View 。在左侧,我显示了一些类别,并根据左侧的选择配置右侧的 View 。配置首先删除缓存,然后更改 NSFetchedResultsController 的谓词,然后对其执行 performFetch。在后台,我找到所选类别的更新对象,然后插入新对象或更新现有对象。现在添加新对象不会自动显示在表格 View 中,并且更新对象会导致删除。我从不同的 NSFetchedResultsController 更新左 TableView 中的类别,效果很好。两个 NSFetchedResultsController 都使用不同的缓存文件。如果我不更改谓词,那么所有类别的对象都可以正常工作。谓词是从选定的类别中获取记录。

最佳答案

我遇到了同样的问题。这就是我修复的方式:

  • 我的谓词使用 ("index == %@")
  • 我正在过滤一个整数值,但我传递了@“1”。
  • 将其更改为 %i 并传递整数,有效。
  • 关于objective-c - 为什么在发送 NSFetchedResultsChangeDelete 事件的核心数据中更改记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463914/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com