У меня есть кнопка фильтра, которая представляет UITableView во всплывающем окне.У меня есть мои категории и кнопка «Все», чтобы обозначить отсутствие фильтра, как в iTunes.
В моем классе applicationDelegate есть NSMutableDisctionary, который я использую для установки галочек.Когда приложение запускается, выбирается только Все, все остальное отменяется.То, что я хочу, это тогда, когда выбрана строка, которая не является «Все», эта строка будет выделена, и все будет отменено.Аналогично, когда выбрано «Все», все строки с галочками больше не имеют галочек, и только галочка «Все» выбирается с галочкой (например, при запуске приложения).В моем UITableView didSelectRowForIndexPath :, я сделал это:
MyAppAppDelegate *dmgr = (MyAppAppDelegate *)[UIApplication sharedApplication].delegate;
NSUInteger row = [indexPath row];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// All selected
if (row == 0) {
for (NSString *key in dmgr.CategoryDictionary) {
[dmgr.CategoryDictionary setObject:[NSNumber numberWithBool:NO] forKey:key];
}
[dmgr.CategoryDictionary setObject:[NSNumber numberWithBool:YES] forKey:@"All"];
}
else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
NSString *key = [_categoriesArray objectAtIndex:row];
BOOL valueAtKey = [[dmgr.CategoryDictionary valueForKey:key] boolValue];
valueAtKey = !valueAtKey;
[dmgr.CategoryDictionary setObject:[NSNumber numberWithBool:valueAtKey] forKey:key];
}
Два вопроса.Во-первых, я получаю эту ошибку, когда выбираю первую строку (Все):
Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFDictionary: 0x597b3d0> was mutated while being enumerated.
Где происходит перечисление?Я думал, так как я выбираю только строку 0, я мог бы изменить и другие строки, а не только строку 0. Я не уверен, что здесь делать с этим.
Второй вопрос заключается в следующем:Вы хотите обновить свой модельный класс?Я не был уверен, считалось ли это хорошим MVC.Спасибо.