• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

NSTableView: DataSource Protokoll mit externem Modell

souljumper

Roter Delicious
Registriert
07.10.08
Beiträge
90
Hi,

ich hab ne NSTableView mit mehreren Spalten. Das Modell dazu liegt in einer gesonderten Klasse. Mein Problem ist nun, dass ein Modell-Eintrag aus mehreren String-Werten besteht. Das bedeutet ich muss es irgendwie schaffen, die informationen einzelnen spalten zuzuordnen.

Ich hab das jetzt so gemacht und dann den identifier abgefragt, den ich der spalte im IB gegeben hab und liefer anhand dessen den richtigen wert zurück - aber geht das auch irgendwie schöner?

- (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn*) tableColumn row: (int) row {
if ( [[tableColumn identifier] isEqual:mad:"silbenschrift"])
return [[model objectAtIndex:row] silbenschrift];
else if ([[tableColumn identifier] isEqual:mad:"kanji"]){
return [[model objectAtIndex:row] kanji];
}
else if ([[tableColumn identifier] isEqual:mad:"romaji"]){
return [[model objectAtIndex:row] romaji];
}
else if ([[tableColumn identifier] isEqual:mad:"uebersetzung"]){
return [[model objectAtIndex:row] uebersetzung];
}
else if ([[tableColumn identifier] isEqual:mad:"type"]){
return [[model objectAtIndex:row] type];
}
return nil;
}
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Jo, das geht auch schöner:
Code:
-(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
{
    return [[model objectAtIndex:row] valueForKey:[tableColumn identifier]];
}
Warum geht das? Das Stichwort heißt Key-Value-Coding.

MacApple