Chcę bez użycia cocoa bindings i array controller'a móc sortować NSTableView.

Mój model to :
NSMutableArray *list;
Obiektami w tablicy są NSString'i.

w IB mam NSTableView, ustawiłem jego delegat i datasource na utworzoną przeze mnie klasę ListController. W ListControlerze zaimplementowałem metody:

Kod:
//dodawanie do tablicy
- (IBAction)addNewItem:(id)sender{
	NSString *str= [newItem stringValue];
	if (![str isEqualToString:@""]){
		[list addObject:str];
		[itemsTable reloadData];
	}
}

/*** NSTableViewDataSource ***/
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
	return[list count];
}

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
	return[list objectAtIndex:row];
}

//??????????????????????????????????????????????????????????????
- (void)tableView:(NSTableView *)aTableView sortDescriptorsDidChange:(NSArray *)oldDescriptors{
	NSLog(@"(void)tableView:(NSTableView *)aTableView sortDescriptorsDidChange:(NSArray *)oldDescriptors");
}

/*** NSTableViewDelegate ***/
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
	if (![object isEqualToString:@""]) {
		[list replaceObjectAtIndex:row withObject:object];
	}
	else {
		[list removeObjectAtIndex:row];
		[itemsTable reloadData];
	}

}
Działa mi dodawanie, usuwanie i edycja wierszy w NSTableView.
Nie działa mi sortowanie, na początku funkcja:
Kod:
- (void)tableView:(NSTableView *)aTableView sortDescriptorsDidChange:(NSArray *)oldDescriptors
nie była wywoływana. Problem rozwiązałem, poprzez dodanie do NSTableView, NSSortDescriptor'a:
Kod:
//to na pewno jest źle :)
NSTableColumn *column = [[itemsTable tableColumns] objectAtIndex:0];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] init];
[column setSortDescriptorPrototype:sortDescriptor];
I teraz pytanie za 100pkt:
Jeżeli miałbym klasę a w niej jakieś properties, np lastName, to utworzyłbym NSSortDescriptor'a w taki oto sposób:
Kod:
lastNameDescriptor = [[NSSortDescriptor alloc]
              initWithKey:@"lastName"
              ascending:YES
              selector:@selector(localizedCaseInsensitiveCompare:)];
ALE, mój model nie posiada klasy z properties np lastName. Umieszczone w nim mam po prostu NSStringi.
I tu pojawia się problem co wstawić zamiast initWithKey:@"lastName".

Do tego jak zaimpelmentować "- (void)tableViewNSTableView *)aTableView sortDescriptorsDidChangeNSArray *)oldDescriptors"
żeby sortować moją tablicę stringów raz rosnąco i raz malejąco.

Projekt można pobrać z tutaj : http://student.agh.edu.pl/~nagrodz/Katalog/ToDoList.zip