首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析NSBlockOperation的executionBlocks

解析NSBlockOperation的executionBlocks
EN

Stack Overflow用户
提问于 2014-02-10 15:41:25
回答 1查看 161关注 0票数 0

我有一个UITableView,其中每个部分都包含一个行,每个行都包含一个UICollectionView。UITableView是数据源,并委托给核心数据数据库。对数据库的更新调用NSFetchedResultsController的控制器: didChangeObject: method,它将块排队以更新相关集合,如下所示:

代码语言:javascript
复制
switch (type) {
    case NSFetchedResultsChangeInsert: {
        [self.blockOperation addExecutionBlock:^{
            [collectionView insertSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] ];
        }];
    break;
}...

然后,我想在这里作为一个批处理执行这些块:

代码语言:javascript
复制
- (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,而我有很多。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-10 15:49:42

您不希望只使用单个块操作,因为之后您将无法分离数据。相反,在每个集合视图中使用一个块操作(这也是每个部分)。将每个索引路径添加到字典中,并以关联的索引路径作为键(检查它已经存在,并根据需要创建/更新)。运行这些块时,迭代字典,获取索引路径(键)的集合视图,并运行块操作(value)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21681506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档