解析 NSBlockOperation 的 executionBlocks
Posted
技术标签:
【中文标题】解析 NSBlockOperation 的 executionBlocks【英文标题】:Parsing NSBlockOperation's 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,而我有很多。
【问题讨论】:
【参考方案1】:您不想只使用单个块操作,因为之后您将无法分离数据。相反,每个集合视图(也是每个部分)使用一个块操作。以关联的索引路径作为键将每个添加到字典中(检查它是否已经存在并根据需要创建/更新)。运行块时,迭代字典,获取索引路径(键)的集合视图并运行块操作(值)。
【讨论】:
以上是关于解析 NSBlockOperation 的 executionBlocks的主要内容,如果未能解决你的问题,请参考以下文章