MRFetchedResultsController 0.2.1

MRFetchedResultsController 0.2.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新版本2016年5月

Héctor Marqués 维护。



MRFetchedResultsControllerNSFetchedResultsController 的一个直接替代方案,它可以在 Mac 和 iOS 上运行。

其目的是提供一个替代方案,使得可以扩展 NSFetchedResultsController 的功能,而无需处理私有 API。

在将应用程序移植到 macOS X 时使用 ChameleonMRFetchedResultsController 解决了该平台上缺少 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 文件。

替代方案