Имам NSTableview
, в този табличен изглед попълвам колони с objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
.
Бих искал колона, която не е попълнена. Ако поставя колона без идентификатор или идентификатор, който не съответства на ключ, получавам грешка, че кодирането на ключ не е съвместимо.
Сега това, което направих, за да заобиколя това, е да добавя колона с идентификатор, наречен "skip", проверявам за това условие в моя код с това...
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
Pizza* pizza = [pizza objectAtIndex:row];
NSString* identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"skip"]) {
return nil;
}
return [pizza valueForKey:identifier];
}
Трябва да отвърна и на това в setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
.
Изглежда, че работи добре, но изглежда като малко хак.
Има ли по-добър начин да направите това?
Освен това причината, поради която искам празни колони, е, че искам да поставя обекти като бутони, които не принадлежат към масива, към който препраща табличният изглед.
Благодаря за приноса!
Pizza
, но е обичайно изгледът да има аспекти, които не са въплътени в модела и следователно контролерът трябва да посредничи. Ако искате, можете да замените-valueForUndefinedKey:
в класаPizza
, но според мен това би било хак. Между другото, след като проверите идентификатора на колоната, не е нужно да използвате skip. Можете също толкова лесно да проверите за празен идентификатор. - person Ken Thomases   schedule 17.05.2014