2009-06-20 4 views
0

Быстрый один. Я пропускаю что-то ...Удалить объект из массива в NSTableView

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

- (void)removeObject:(MyClass *)myObject 

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

Может ли кто-то трещать мой мозг, пожалуйста?!? спасибо!

ответ

0

Вы могли бы реализовать стандартные протоколы 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>} 

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

0

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

0

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

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

Смежные вопросы