【问题标题】:Parsing NSBlockOperation's executionBlocks解析 NSBlockOperation 的 executionBlocks
【发布时间】:2014-02-10 15:41:25
【问题描述】:

我有一个 UITableView,其中每个部分都包含一行,每行都包含一个 UICollectionView。 UITableView 是数据源并委托给 Core Data 数据库。对数据库的更新调用 NSFetchedResultsController 的控制器:didChangeObject:将块排队以更新相关集合的方法:

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 Furrow 和 Blake Watters 的 techniques 将核心数据数据库连接到 UICollectionView。

我的问题是,如何访问-controllerdidChangeContent: 中正确的collectionView 对象? self.blockOperation 中的每个块都有相关的 collectionView,但我不知道如何从 NSBlockOperation 的 executionBlocks 属性中解析出来,或者即使这是最好的方法。 Ash 和 Blake 的示例只有一个 UICollectionView,而我有很多。

【问题讨论】:

    标签: ios objective-c core-data uicollectionview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      相关资源
      最近更新 更多