Вопрос

Быстрый. Я что-то пропускаю ...

У меня есть сгруппированное табличное представление, которое построено из массивов в NSDictionary. Каждый массив является разделом таблицы. Находясь в режиме редактирования, пользователь нажимает кнопку «удалить». Я звоню

- (void)removeObject:(MyClass *)myObject 

как я могу определить, какой массив отправить сообщение [myArray removeObject: myObject]? NSDictionary не имеет indexOfObject: метод, но NSArray есть. Я полагаю, что мог бы перебирать каждый массив в поисках указанного объекта, но это не так.

Может кто-нибудь погреметь мне, пожалуйста?!? ТНХ!

Это было полезно?

Решение

Вы можете реализовать стандартные протоколы UITableView и использовать этот метод:

(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle<br> forRowAtIndexPath:(NSIndexPath *)indexPath {
     <br><br>//check the section according to your array, if(indexPath.section ==....
     <br><br>
    if(editingStyle == UITableViewCellEditingStyleDelete) {
     <br>
    [arrayFoundBefore removeObjectAtIndex:indexPath.row];
    <br> 
    }
    <br>}

Я думаю, что это способ сделать это, хотя и не уверен. Кто-нибудь может уточнить?

Другие советы

Вы должны знать, какой tableView отправил сообщение (потому что рассматриваемый метод находится в делегате для этого объекта), и поэтому вы можете либо создать массив в методе viewDidLoad в делегате tableView, либо альтернативно выяснить, какой из них основан на контексте делегата.

Я не вижу ничего явно неправильного в итерациях по массивам. Как часто люди удаляют вещи, и достаточно ли велики словари, чтобы сделать это значительными накладными расходами?

В качестве контрольной точки метод NSArray indexOfObject: не делает ничего более сложного, чем итерация, хотя массив ищет соответствующий объект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top