2009-06-20 5 views
0

Quick one. Ich übersehe etwas ...Löschen eines Objekts aus dem Array in NSTableView

Ich habe eine gruppierte Tabellenansicht, die aus Arrays in einem NSDictionary erstellt wird. Jedes Array ist ein Abschnitt der Tabelle. Wenn im Bearbeitungsmodus und ein Benutzer klickt „löschen“ Ich nenne

- (void)removeObject:(MyClass *)myObject 

Wie kann ich feststellen, welche Array die Nachricht senden [myArray removeObject: myObject]? NSDictionary hat keine indexOfObject: -Methode, aber NSArray. Ich nehme an, ich könnte durch jedes Array iterieren, um nach dem Objekt zu suchen, aber das scheint nicht richtig zu sein.

Kann jemand bitte mein Gehirn rasseln?!? Danke!

Antwort

0

Sie könnten die Standard UITableView Protokolle implementieren und diese Methode verwenden:

(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>} 

Ich denke, dass die Art und Weise, es zu tun, wenn auch nicht sicher. Kann jemand klären?

0

Sie sollten wissen, welche TableView die Nachricht gesendet hat (weil die fragliche Methode im Delegaten für dieses Objekt ist) - und Sie können das Array entweder in der ViewDidLoad-Methode im TableView-Delegate erstellen oder alternativ herausfinden, welche Es basiert auf dem Delegatenkontext.

0

Ich sehe nichts offensichtlich falsch mit Iteration durch die Arrays. Wie oft löschen Leute Dinge, und sind die Wörterbücher wirklich groß genug, um dies zu einem signifikanten Overhead zu machen?

Als Referenzpunkt, NSArray indexOfObject: Methode tut nichts schicker als iterate obwohl das Array nach einem passenden Objekt suchen.

Verwandte Themen