【问题标题】:'NSGenericException', reason: '*** Collection <CALayerArray: 0x17485f7a0> was mutated while being enumerated'NSGenericException',原因:'*** Collection <CALayerArray: 0x17485f7a0> 在枚举时发生了突变
【发布时间】:2017-04-27 08:04:34
【问题描述】:

我在我的项目中发现了崩溃代码,但我不知道这段代码有什么问题,请告诉我

for(NSMutableDictionary *dict  in sortedArray)
{
NSNumber *dist = dict[kDistance];
for(DRMapView * mapObj  in mapViewDataArrayNew)
{
if([mapObj.mDistance isEqualToNumber:dist])
{
[self.barsDataArray addObject:mapObj];
}
}
}

有人说使用 index for 循环 如何用循环索引替换每个

提前谢谢

【问题讨论】:

  • barsDataArray的数据类型是什么?请尽可能格式化并解释您的问题以获得更好的回应。尝试解释所有变量和数据类型。
  • 你的代码在哪一行停止了?
  • self.barsDataArray 是 NSMuatble 对象吗?
  • 枚举时不能修改数组。您可以执行以下操作:stackoverflow.com/a/14152891/3901620
  • self.barsDataArray是可变数组,sortedArray是可变数组,mapviewdataarraynew是可变数组

标签: ios for-loop foreach nsarray


【解决方案1】:

您需要迭代副本并更改原始内容

 NSDictionary dictCopy = [THE_ORIGINAL_DICT copy];
 for(NSMutableDictionary *dict  in dictCopy)
    {
        NSNumber *dist = THE_ORIGINAL_DICT[kDistance];
        for(DRMapView * mapObj  in mapViewDataArrayNew)
        {
            if([mapObj.mDistance isEqualToNumber:dist])
        {
        [self.barsDataArray addObject:mapObj];
        }
    }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2012-09-21
    • 2012-05-11
    相关资源
    最近更新 更多