JVRFetchedResultsControllerDataSource 1.0.1

JVRFetchedResultsControllerDataSource 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014 年 12 月

József Vesza 维护。



一个可重用的类,它结合了 UITableViewDataSourceNSFetchedResultsControllerDelegate。还支持表格视图单元格的删除和添加。要使用它,您还需要一个符合 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

在 Table View Controller 中的使用示例

使用 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'