我试图弄清楚为什么我的 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;
排序后的属性如下所示:
以下是我更新所述属性的方式:
entity.lastOpened = [NSDate date];
[entity.managedObjectContext save:nil];
有什么想法吗?这让我很困惑。
编辑:
我做了更多的测试,问题似乎是这样的:NSFetchedResultsController
只是费心对原始的sortDescriptors
进行任何处理。如果我在 NSFetchedResultsController
初始化之后更改了请求的 sortDescriptors
或 predicate
(并且我正在调用 performFetch:
),我的委托(delegate)方法被调用,但 fetchedObjects
不会自行解决。
根据评论,如果您动态更改获取请求的谓词或排序描述符,FRC 似乎会感到困惑。如果您需要改变它们,则使用新的谓词和排序描述符实例化一个全新的 FRC。
关于ios - NSFetchedResultsController 不诉诸内容更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104173/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |