GTTableViewController 1.2.0

GTTableViewController 1.2.0

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

未被认领维护。



  • gongtao

GTTableViewController 是一个轻量级的 UIViewController 子类,它集成了 NSFetchedResultsControllerUITableView 以显示CoreData数据。它具有良好的可扩展性,可以通过继承或通过使用数据源方法作为子视图控制器集成到项目中。要在UITableView中显示数据,您只需自定义自己的 NSFetchRequestUITableViewCell 对象。

如何开始使用?

  • 下载 GTTableViewController 并将Class文件夹下的文件添加到您的项目中。
  • 使用CocoaPods安装。 CocoaPods 是Objective-C的依赖项管理器,它自动化并简化了使用第三方库(如AFNetworking)的过程。更多信息请参见“开始使用”指南
  • 有两种使用方式:继承和GTTableViewControllerDataSource。

继承

编写一个GTTableViewController子类,并像这样重写其方法:

NSManagedObjectContext

返回你要使用的CoreData上下文中的 NSManagedObjectContext 对象。如果没有重写,则默认从AppDelegate中返回。

- (NSManagedObjectContext *)managedObjectContext
{
    id appDelegate = [UIApplication sharedApplication].delegate;
    return [appDelegate managedObjectContext];
}

NSFetchRequest

返回包含查询规则和顺序的 NSFetchRequest 对象。此方法必须被重写。

- (NSFetchRequest *)fetchRequest
{
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *playerEntity = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:[self managedObjectContext]];
    [fetchRequest setEntity:playerEntity];

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

    return fetchRequest;
}

UITableViewCell显示

配置您自己的 UITableViewCell。如果没有重写,则Cell为空。

- (void)configCell:(UITableViewCell *)cell cellForRowAtIndexPath:(NSIndexPath *)indexPath fetchedResultsController:(NSFetchedResultsController *)fetchedResultsController
{
    Player *player = [fetchedResultsController objectAtIndexPath:indexPath];
    cell.textLabel.text = player.name;
}

UITableViewCell

返回您的自定义 UITableViewCell。如果没有重写,则Cell为 UITableViewCellStyleDefault

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath fetchedResultsController:(NSFetchedResultsController *)fetchedResultsController
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    [self configCell:cell cellForRowAtIndexPath:indexPath fetchedResultsController:fetchedResultsController];

    return cell;
}

GTTableViewControllerDataSource

数据源几乎像继承方式。这种方式用于将其集成为子视图或子视图控制器。

初始化

UIViewController 对象中编写如下代码:

GTTableViewController *viewController = [[GTTableViewController alloc] init];
viewController.dataSource = self;
[self addChildViewController:viewController];
[self.view addSubview:viewController.view];

NSManagedObjectContext

- (NSManagedObjectContext *)managedObjectContextGTTableViewController:(GTTableViewController *)viewController

NSFetchRequest

此方法为必需。

- (NSFetchRequest *)fetchRequestGTTableViewController:(GTTableViewController *)viewController

UITableViewCell 显示

- (void)configCell:(UITableViewCell *)cell viewController:(GTTableViewController *)viewController fetchedResultsController:(NSFetchedResultsController *)fetchedResultsController

UITableViewCell

- (void)configCell:(UITableViewCell *)cell cellForRowAtIndexPath:(NSIndexPath *)indexPath viewController:(GTTableViewController *)viewController fetchedResultsController:(NSFetchedResultsController *)fetchedResultsController

其他有用信息

获取对象方法

- (void)performFetch

此属性控制 UITableView 中显示的获取对象的最大数量。

@property (nonatomic, assign) int numberOfFetchLimit

联系

龚涛 Gong Tao 邮箱:[email protected]