测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可协议 | MIT |
发布上次发布 | 2015年2月 |
由Elvis Nuñez维护。
将一个NSManagedObject插入CoreData并在您的UITableView中以动画方式显示,需要多少代码?(当然使用NSFetchedResultsController)
100行代码?200行代码?300行代码?
哦,ANDYFetchedResultsTableDataSource可以在71行代码内完成这个操作。
#pragma mark - Lazy Instantiation
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController) {
return _fetchedResultsController;
}
NSManagedObjectContext *context = [[ANDYDataManager sharedManager] mainContext];
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Task"];
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:nil];
return _fetchedResultsController;
}
- (ANDYFetchedResultsTableDataSource *)dataSource
{
if (_dataSource) {
return _dataSource;
}
_dataSource = [[ANDYFetchedResultsTableDataSource alloc] initWithTableView:self.tableView
fetchedResultsController:self.fetchedResultsController
cellIdentifier:ANDYCellIdentifier];
_dataSource.configureCellBlock = ^(UITableViewCell *cell, Task *task, NSIndexPath *indexPath) {
cell.textLabel.text = [NSString stringWithFormat:@"%@ - %@ (%@)", task.title, task.date, indexPath];
};
return _dataSource;
}
#pragma mark - View Lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ANDYCellIdentifier];
self.tableView.dataSource = self.dataSource;
UIBarButtonItem *addTaskButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(createTask)];
self.navigationItem.rightBarButtonItem = addTaskButton;
}
#pragma mark - Actions
- (void)createTask
{
[ANDYDataManager performInBackgroundContext:^(NSManagedObjectContext *context) {
Task *task = [Task insertInManagedObjectContext:context];
task.title = @"Hello!";
task.date = [NSDate date];
[context save:nil];
}];
}
基于objc.io上的优秀团队的工作。
如果有什么看起来很愚蠢,请创建一个友好且建设性的问题,您的反馈将会是伟大的。祝您有美好的一天。
Elvis Nuñez, [email protected]
ANDYFetchedResultsTableDataSource在MIT许可下可用。有关更多信息,请参阅LICENSE文件。