• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - NSFetchedResultsController 不诉诸内容更改

[复制链接]
菜鸟教程小白 发表于 2022-12-13 08:44:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我试图弄清楚为什么我的 NSFetchedResultsController 实例在内容更改时似乎忽略了它的 sortDescriptor。调用了所有委托(delegate)方法等,但是当我正在排序的相关属性发生更改时,我只收到一个 NSFetchedResultsChangeUpdate 更改通知,并且内容没有发生:

以下是我创建 NSFetchedResultsController 实例的方式:

NSManagedObjectContext *context = [UIApplication managedObjectContext];

_fetchRequest = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([MCCDBook class])];
_fetchRequest.sortDescriptors = @[
    [NSSortDescriptor sortDescriptorWithKey"lastOpened" ascending:true selectorselector(compare]
];
_fetchRequest.entity = [NSEntityDescription entityForName:_fetchRequest.entityName inManagedObjectContext:context];

_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:_fetchRequest managedObjectContext:context sectionNameKeyPath"sectionTitle" cacheName:nil];
_fetchedResultsController.delegate = self;

排序后的属性如下所示:

enter image description here

以下是我更新所述属性的方式:

entity.lastOpened = [NSDate date];

[entity.managedObjectContext save:nil];

有什么想法吗?这让我很困惑。

编辑:

我做了更多的测试,问题似乎是这样的:NSFetchedResultsController 只是费心对原始的sortDescriptors 进行任何处理。如果我在 NSFetchedResultsController 初始化之后更改了请求的 sortDescriptorspredicate(并且我正在调用 performFetch:),我的委托(delegate)方法被调用,但 fetchedObjects 不会自行解决。



Best Answer-推荐答案


根据评论,如果您动态更改获取请求的谓词或排序描述符,FRC 似乎会感到困惑。如果您需要改变它们,则使用新的谓词和排序描述符实例化一个全新的 FRC。

关于ios - NSFetchedResultsController 不诉诸内容更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104173/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap