gpt4 book ai didi

ios - 解析 NSBlockOperation 的 executionBlocks

转载 作者:行者123 更新时间:2023-11-29 03:16:13 27 4
gpt4 key购买 nike

我有一个 UITableView,其中每个部分都包含一行,每一行都包含一个 UICollectionView。 UITableView 是数据源并委托(delegate)给 Core Data 数据库。对数据库的更新调用 NSFetchedResultsController 的 Controller :didChangeObject: 方法,该方法将 block 排队以更新相关集合,如下所示:

switch (type) {
case NSFetchedResultsChangeInsert: {
[self.blockOperation addExecutionBlock:^{
[collectionView insertSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] ];
}];
break;
}...

然后我想批量执行这里的 block :

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
[collectionView performBatchUpdates:^{
[self.blockOperation start];
} completion:^(BOOL finished) {
// Do whatever
}];
}

这是使用 Ash Furrow 和 Blake Watters 的 techniques用于将核心数据数据库连接到 UICollectionView。

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

最佳答案

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

关于ios - 解析 NSBlockOperation 的 executionBlocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681506/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com