这是一个小的Pod,为NSFetchedResultsControllerDelegate
协议提供了一个默认实现。还有一个针对UITableViewController
和一个针对UICollectionViewController
的实现。与重新加载整个表相比,FRC代理实现可以更有效地更新这些"列表项"视图。
此Pod实际上消除了连接NSFetchedResultsController
并将更新传入上述之一视图控制器的样板代码。它更进一步地将DataSource协议实现提取到单独的类中,以更容易地通过提供自己的实现来定制它们。
要运行示例项目,请克隆仓库,并首先从示例目录运行pod install
。
pod try Fetchable
是一种简短的方式来做这件事,但它仍然不会为您运行pod install
。
创建一个新的Cocoa Touch类,它可以扩展FBLFetchedResultsTableViewController
或FBLFetchedResultsCollectionViewController
。
在你的-viewDidLoad
方法中,放一些如下的代码
#pragma mark - UIViewController
- (void)viewDidLoad
{
[super viewDidLoad];
FBLConfigureCellBlock configureCell = ^(UICollectionViewCell *collectionCell, id item) {
YourCustomCollectionViewCell *cell = (YourCustomCollectionViewCell *)collectionCell;
[cell prepareForReuse];
ModelClass *modelInstance = (ModelClass *)item;
cell.textLabel.text = repo.name;
};
NSFetchedResultsController *frc = [ModelClass MR_fetchAllSortedBy:@"name" ascending:YES
withPredicate:nil
groupBy:nil delegate:self];
self.dataSource = [[FBLFetchedResultsCollectionViewDataSource alloc] initWithFetchedResultsController:frc
cellIdentifier:@"CellReuseIdentifier"
configureCellBlock:configureCell];
}
该代码1.创建一个FBLConfigureCellBlock
,它将与您所用的模型类的实例一起工作。2.使用MagicalRecord隐藏CoreData样板代码,配置一个NSFetchedResultsController
来从上下文中检索所有ModelClass
对象,并按name
属性排序。3.建立并保留一个FBLFetchedResults*DataSource
,它将使用前面的两个对象和一个固定的单元格重用标识符。
目前只支持一个单元格标识符。如果能根据属性从模型来更改单元格标识符将更理想。如果您在我之前达到这个目标,请给我发送一个pull request!
NSFetchedResultsController 在添加关联关系时不会更新
Ben Chatelain,[email protected] @phatblat
Fetchable 可在 MIT 许可证下使用。详见 LICENSE 文件了解更多信息。