测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2014 年 12 月 |
由 József Vesza 维护。
一个可重用的类,它结合了 UITableViewDataSource
和 NSFetchedResultsControllerDelegate
。还支持表格视图单元格的删除和添加。要使用它,您还需要一个符合 JVRFetchedResultsControllerDataSourceDelegate
协议的类,该类将处理单个单元格的设置和删除。有关使用说明,请参阅下面的简单示例或参考示例项目。
该对象可以使用 UITableViewDataSource
协议中找到的 tableView:cellForRowAtIndexPath:
方法配置单个表格视图单元格。它还可以访问数据源的数据源中 NSManagedObjectContext
属性,因此负责处理项目的删除。
// MyHelperDelegate.h
#import "JVRFetchedResultsControllerDataSource.h"
@interface MyHelperDelegate : NSObject<JVRFetchedResultsControllerDataSourceDelegate>
@property (nonatomic, strong) NSManagedObjectContext
@end
// MyHelperDelegate.m
@implementation MyHelperDelegate
- (NSString *)fetchCellIdentifierForObject:(id)anObject
{
if ([anObject isKindOfClass:[MyClass class]])
{
return @"myCell";
}
else
{
return @"regularCell";
}
}
- (UITableViewCell *)configureCell:(MyCell *)cell withObject:(NSManagedObject *)object
{
cell.textLabel.text = object.property;
}
- (void)deleteObject:(NSManagedObject *)object
{
[self.managedObjectContext deleteObject:object];
NSError *e;
[self.managedObjectContext save:&e];
}
@end
使用 JVRFetchedResultsControllerDataSource
,可以从 UITableViewController
类中删除常规表格视图设置和 NSFetchedResultsControllerDelegate
方法,留出更多重要部分。数据源类需要一个配置后的 NSFetchedResultsController
对象和一个辅助代理。
// MyTableViewController.h
@implementation JVEItemsView
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupFetchedResultsDataSource];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.fetchResultsControllerDataSource.paused = NO;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.fetchResultsControllerDataSource.paused = YES;
}
- (void)setupFetchedResultsDataSource
{
self.fetchResultsControllerDataSource = [JVRFetchedResultsControllerDataSource dataSourceForTableView:self.tableView
withFetchedResultsController:self.fetchedResultsController
usingDelegate:[MyHelperDelegate delegateWithManagedObjectContext:self.managedObjectContext]];
}
@end
您可以将源文件复制到您的项目中,但推荐的方法是使用下面的 Podfile 通过 CocoaPods 安装此类:
platform :ios, "7.1"
pod 'JVRFetchedResultsControllerDataSource'