作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我试图找出为什么我的 NSFetchedResultsController
实例在内容更改时似乎忽略了它的 sortDescriptor
。所有委托(delegate)方法等都被调用,但是当我正在排序的相关属性发生变化时,我只收到一个 NSFetchedResultsChangeUpdate
更改通知,并且没有发生内容求助:
下面是我如何创建 NSFetchedResultsController
实例:
NSManagedObjectContext *context = [UIApplication managedObjectContext];
_fetchRequest = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([MCCDBook class])];
_fetchRequest.sortDescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:@"lastOpened" ascending:true selector:@selector(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/
我是一名优秀的程序员,十分优秀!