集合< __ NSSetM:0x14ea0160>在被列举时被突变

时间:2015-06-12 02:51:29

标签: ios

当我使用UICollectionView时。我需要更改它的dataArray和reloadData。但是当我删除dataArray中的一个对象时,我编写了代码[collectionView reloadData] ;,我滑动了collectionView然后错误来了,告诉我 *因未捕获的异常而终止应用程序'NSGenericException',原因:'* 集合< __ NSSetM:0x14ea0160>在被列举时发生了变异。我该如何解决这个问题?非常感谢!!!

NSMutableArray *temp = [NSMutableArray arrayWithArray:self.dataArray]; 
for (Mysource *source in self.dataArray) { 
    if (source.isSelect) { 
        [temp removeObject:source]; 
    } 
} 
self.dataArray = [NSMutableArray arrayWithArray:temp]; 
[self.CollectionView reloadData];

1 个答案:

答案 0 :(得分:-1)

我相信,当你通过一些Collection(可能是一个循环)进行枚举时,你将从循环中的该Collection中删除一个对象。如下所示:

for (id object in someArray)
   if (conditionSatisfied)
       [someArray removeObject:object];

Objective-C中不允许这样做。您需要在临时集合中存储需要删除的对象,然后在循环结束后将其删除。