Полученная ошибка говорит о том, что tL2 пуст. Я думаю, вы хотели сравнить текст внутри textViews с пустой строкой, поэтому вы должны изменить свой код так, чтобы он выглядел следующим образом:
if(t5.getText().equals("")){
tL2.add(t5);
}
Кроме того, лучше проверить, есть ли внутри tL2 элементы, прежде чем использовать первый элемент, поэтому я бы изменил последний фрагмент кода, чтобы он выглядел так:
if (tL2.size()>0)
tL2.get(0).setText(a);
Хорошо способ решить его не состоит в том, чтобы видоизменить массив (например, добавить объект) при перечислении его :)
Проблема здесь состоит в том, что изменение массива путем добавления/удаления элементов могло заставить перечислимые величины становиться недопустимыми, следовательно почему это - проблема.
В Вашем случае самый легкий способ решить это исправляет ошибку в Вашем коде. Ваш код делает, "еще добавляют" пункт для каждого объекта в массиве, и я совершенно уверен, что это не то, что Вы хотите.
Попробуйте это;
bool found = false;
for (NSDictionary *tmp in aCollection)
{
if ([[bar valueForKey:@"id"] isEqualToString:[tmp valueForKey:@"id"]])
{
found = true;
break;
}
}
if (!found)
{
[aCollection addObject:bar];
}
Сделайте копию набора и выполните итерации через это. Затем можно выгрузить или добавить к исходному набору без проблем.
Строка
[aCollection addObject:bar]
Ваша проблема. Вы не можете изменить aCollection
при перечислении его. Лучший подход должен был бы создать временный файл NSMutableArray
, добавить bar
к этому затем звоните [aCollection addObjectsFromArray:]
с Вашим временным массивом.
Например:
NSMutableArray *foundObjects = [NSMutableArray array];
for (NSDictionary *aDictionary in aCollection) {
if ([[bar objectForKey:@"id"] isEqual:[aDictionary objectForKey:@"id"]])
break;
[foundObjects addObject:bar];
}
[aCollection addObjectsFromArray:foundObjects];
От Objective C 2.0 Языка программирования Вы не можете изменить перечисляемый набор:
Перечисление “безопасно” — перечислитель имеет защиту мутации так, чтобы, при попытке изменить набор во время перечисления, исключение было повышено.