我有一个UITableView,其中每个部分都包含一个行,每个行都包含一个UICollectionView。UITableView是数据源,并委托给核心数据数据库。对数据库的更新调用NSFetchedResultsController的控制器: didChangeObject: method,它将块排队以更新相关集合,如下所示:
switch (type) {
case NSFetchedResultsChangeInsert: {
[self.blockOperation addExecutionBlock:^{
[collectionView insertSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] ];
}];
break;
}...然后,我想在这里作为一个批处理执行这些块:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
[collectionView performBatchUpdates:^{
[self.blockOperation start];
} completion:^(BOOL finished) {
// Do whatever
}];
}这是使用Ash和Blake的技法将核心数据数据库连接到UICollectionView。
我的问题是,如何在-controllerdidChangeContent:中访问正确的-controllerdidChangeContent:对象?self.blockOperation中的每个块都有相关的collectionView,但是我不知道如何从NSBlockOperation的executionBlocks属性中解析它,或者即使这是获得它的最佳方法。Ash和Blake的例子只有一个UICollectionView,而我有很多。
发布于 2014-02-10 15:49:42
您不希望只使用单个块操作,因为之后您将无法分离数据。相反,在每个集合视图中使用一个块操作(这也是每个部分)。将每个索引路径添加到字典中,并以关联的索引路径作为键(检查它已经存在,并根据需要创建/更新)。运行这些块时,迭代字典,获取索引路径(键)的集合视图,并运行块操作(value)。
https://stackoverflow.com/questions/21681506
复制相似问题