在开发的过程中遇到这样的一个错误:
if (button.selected)
{
[self.filterBtnArray addObject:[TNHotelFilterFlag flagWithType:TNHotelFilterFlagTypeOther name:button.titleLabel.text value:nil]];
} else
{
//当头部view中的button不被选中的时候,需要移除下面的flag
for (TNHotelFilterFlag *flag0 in self.filterBtnArray)
{
if ([flag0.name isEqualToString:button.titleLabel.text])
{
[self.filterBtnArray removeObject:flag0];
}
}
}
在运行的过程中crash,报错误提示如下:
Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM:
解决方法:
if (button.selected)
{
[self.filterBtnArray addObject:[TNHotelFilterFlag flagWithType:TNHotelFilterFlagTypeOther name:button.titleLabel.text value:nil]];
} else
{
//当头部view中的button不被选中的时候,需要移除下面的flag
NSMutableArray *temperyArry0 = [self.filterBtnArray mutableCopy];
for (TNHotelFilterFlag *flag0 in self.filterBtnArray)
{
if ([flag0.name isEqualToString:button.titleLabel.text])
{
[temperyArry0 removeObject:flag0];
}
}
self.filterBtnArray = temperyArry0;
}
原因:
在上面的代码,我是通过遍历
self.filterBtnArray这个数组来找到与我匹配项并且删除,问题就处在这里,不稳定,需要建立一个副本,在副本中进行更换,然后将这个副本赋值给原先的数组。