Ios 删除除所选UICollectionView索引之外的所有索引

Ios 删除除所选UICollectionView索引之外的所有索引,ios,objective-c,Ios,Objective C,我正在尝试删除数据源的所有索引,但选中的索引除外。这是我正在使用的代码 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { NSMutableIndexSet *indexesToDelete = [NSMutableIndexSet indexSet]; NSUInteg

我正在尝试删除数据源的所有索引,但选中的索引除外。这是我正在使用的代码

 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {

            NSMutableIndexSet *indexesToDelete = [NSMutableIndexSet indexSet];
            NSUInteger currentIndex = 0;
            for (NSIndexPath *cellIndexes in collectionView.indexPathsForVisibleItems)
            {
                if (cellIndexes.row != indexPath.row)
                {
                    [indexesToDelete addIndex:currentIndex];
                }
                currentIndex++;
            }
            [self.searchUsers removeObjectsAtIndexes:indexesToDelete];
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];
        [self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];
        }];
    }
我的集合视图在我的tableView中,因此我可以在重新加载tableView时重新加载数据

indexDelete逻辑的错误是,我的'indexesToDelete'NSMutableIndexSet始终为零。当然,我不能发送一个nil对象来移除objectsatixes

我似乎不明白我的逻辑有什么问题。有什么想法吗


编辑:我似乎没有改变任何东西,但不是我没有崩溃,而是删除了错误的索引

表和集合视图的索引路径对于节和行有两部分,它们不是整数。不使用整数currentIndex,只需将cellIndexes添加到数组而不是可变IndexSet

NSMutableArray *indexesToDelete = [NSMutableArray new];

for (NSIndexPath *cellIndexes in collectionView.indexPathsForVisibleItems){
    if (cellIndexes.row != indexPath.row) {
        [indexesToDelete addObject:cellIndexes]; // it would be better to call this variable cellIndex since it's a single index
    }      
 }

我正在删除枚举的索引。只需获取非选定单元格的索引即可。哎呀

   NSMutableIndexSet *indexesToDelete = [NSMutableIndexSet indexSet];
        for (NSIndexPath *cellIndexes in collectionView.indexPathsForVisibleItems)
        {
            if (cellIndexes.row != indexPath.row)
            {
                [indexesToDelete addIndex:cellIndexes.row];
            }
        }

        [self.searchUsers removeObjectsAtIndexes:indexesToDelete];
        NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];
        [self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationFade];

您的tableview是显示从NSObject获取的值还是仅显示每行的字符串?刚刚意识到这一点,但是它需要是一个索引集才能执行RemoveObjectsIndexes方法。不