测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最新版本 | 2016年5月 |
由 Héctor Marqués 维护。
MRFetchedResultsController 是 NSFetchedResultsController
的一个直接替代方案,它可以在 Mac 和 iOS 上运行。
其目的是提供一个替代方案,使得可以扩展 NSFetchedResultsController
的功能,而无需处理私有 API。
在将应用程序移植到 macOS X 时使用 Chameleon,MRFetchedResultsController 解决了该平台上缺少 NSFetchedResultsController
实现的问题,并提供了一个既可用于 iOS 也可用于 macOS 版本的应用程序替代方案。
将 MRFetchedResultsController 目录复制到您的项目中。
在将 MRFetchedResultsController 目录下的文件添加到您的项目后,您可以使用它就像使用 NSFetchedResultsController
一样。
在扩展 MRFetchedResultsController
时,您可以通过导入 MRFetchedResultsController+Internal.h 来将其实例方法暴露给类别和/或子类。
在将查找到的结果控制器与 UICollectionView
一起使用时,您可以在委托中实现方法 - (void)controller:(MRFetchedResultsController *)controller didChangeSections:(NSArray *)sectionChanges andObjects:(NSArray *)objectChanges
来处理内容变化
- (void)controller:(MRFetchedResultsController *)controller didChangeSections:(NSArray *)sectionChanges andObjects:(NSArray *)objectChanges
{
[self.collectionView performBatchUpdates:^{
for (id<MRFetchedResultsSectionChangeInfo> change in sectionChanges) {
[change performUpdateInCollectionView:self.collectionView];
}
for (id<MRFetchedResultsObjectChangeInfo> change in objectChanges) {
[change performUpdateInCollectionView:self.collectionView];
}
} completion:nil];
}
除了提供支持 - [UICollectionView performBatchUpdates:completion:]
的新委托方法之外;MRFetchedResultsController.h 还包含 3 个额外的属性,这些属性在 NSFetchedResultsController.h 中不存在,可用于微调查找到的结果控制器的更改跟踪行为。
// Changes in the context are not applied to the fetchedObjects array until applyFetchedObjectsChanges is set.
@property (nonatomic, assign) BOOL applyFetchedObjectsChanges;
// If set, changes in the context are not applied until the context is successfully saved.
@property (nonatomic, assign) BOOL changesAppliedOnSave;
// If set, it is used for notifying changes asynchronously.
@property (nonatomic, assign) dispatch_queue_t notifyChangesQueue;
MRFetchedResultsController 可在 MIT 许可证下获得。有关更多信息,请参阅 LICENSE 文件。