Wie erhalte ich Daten von einem NstableView?
-
19-09-2019 - |
Frage
ich habe ein NSTableView
mit zwei Spalten und einer Datenquelle, die sie mit Daten ausfüllt. Dieser Teil funktioniert.
Wie bekomme ich Daten (NSString
Format) aus dem NSTableView
? Ich kann die ausgewählte Reihe aber bekommen NSTableView
Es scheint keine Methoden zum Zugriff auf Daten zu haben.
Das Erhalten der Daten aus meiner Datenquelle scheint nutzlose Daten zurückzugeben (Typ ID und NSLog()
und NSRunAlertPanel()
Beide behaupten, dass die Daten nicht vom Typ NSString
.
Was ist der einfachste Weg, um Daten von einem zu erhalten? NSTableView
?
Aktualisieren:
Es stellt sich heraus, warum das Erhalten von Daten aus meiner Datenquelle fehlgeschlagen ist NSString
Teil eines Teils sein NSArray
in dem tableView()
Methode.
Meine Eingabedatei enthält Zeilen, die ich für die Spalten in meiner Tabellenansicht geteilt habe. Das NSTableView
Ruft die richtigen Daten ab, aber wenn ich das rufe tableView()
Methode selbst, ich stoße auf eine Exc_bad_access Fehler, von dem ich annehme, dass es mit Speicherverwaltung zu tun hat.
Ein weiteres Update:
Es war keine Speicherverwaltung. Es war die Unfähigkeit meiner Anwendung, die zu identifizieren NSTableColumn
es wollte. Ich habe eine zweite Methode geschrieben, mit der ich manuell auf Daten zugreifen kann, die ein INT für die Spalte und nicht für a NSTableColumn
Und das hat funktioniert.
Lösung
Es ist ein Verstoß gegen das MVC -Paradigma, Ihre Tabelle (eine Ansicht) als Ort zum Speichern Ihrer Daten (Modell) zu verwenden. Sie sollten in der Lage sein, den Wert aus Ihrer Datenquelle genauso zu erhalten wie die Tabellenansicht. Wofür macht Ihr Code für Ihr Code? tableView:objectValueForTableColumn:row:
Tun Sie die Daten?
Wenn Ihre Tabelle bearbeitbar ist, erhalten Sie Anrufe aus der Tabellenansicht auf tableView:setObjectValue:forTableColumn:row:
Damit Sie Ihre Datenquelle angemessen ändern können.