答案 0 :(得分:0)
您正在从正在迭代的数组中删除对象。 这可能会导致这样的错误。
您只需要替换
for (NSString *code in list)
with:
for (NSString *code in codeList)
答案 1 :(得分:0)
在你看来只是放codeList
,你的问题就会得到解决。
检查一下我修改了你的方法。
-(NSArray *) checkVisibleCode:(NSArray *) codeList{
NSMutableArray *list = [NSMutableArray arrayWithArray:codeList];
for (NSString *code in codeList) {
if (![self.codeMapping.allKeys containsObject:code]) {
[list removeObject:code];
}
}
return list;
}
答案 2 :(得分:-1)
在您对其进行迭代时,不要删除数组或字典或任何集合集中的对象。
迭代时保留要删除的索引,然后删除所有objets。您可以使用SupplierUpdateForm
方法:
indexesOfObjectsPassingTest
答案 3 :(得分:-1)
您应该使用indicesOfObjectsPassingTest和objectsAtIndexes执行此操作:即使您按照例如Anbu的回复来使您的代码工作,此代码也在O(n ^ 2)中运行。使用100,000个对象的列表来执行此操作,其中每个第二个对象都被删除,并且您的应用程序死于可怕的死亡,因为它耗尽了CPU时间。