Добре, това ме подлудява, имам Xcode OSX приложение, над което работя. Направих някои промени наскоро и започнах да получавам следната грешка по време на компилиране:
iModerate Desktop[72478:303] *** Illegal NSTableView data source (<NSView: 0x102535290>).
Must implement numberOfRowsInTableView: and tableView:objectValueForTableColumn:row:
Не мога да тренирам откъде идва това, внедрях и двата метода в моя appDelegate:
- (NSView *)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
// The return value is typed as (id) because it will return a string in most cases.
id returnValue=nil;
// The column identifier string is the easiest way to identify a table column.
NSString *columnIdentifer = [tableColumn identifier];
// Get the name at the specified row in namesArray
NSString *theName = [[self.twitterClientsController arrangedObjects] objectAtIndex:row];
// Compare each column identifier and set the return value to
// the Person field value appropriate for the column.
if ([columnIdentifer isEqualToString:@"name"]) {
returnValue = theName;
}
return returnValue;
}
и този
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return[[self.twitterClientsController arrangedObjects] count];
}
И делегатът на приложението е зададен като NSTableViewDelegate
Сега допълнителното странно / смущаващо нещо е, че азнямам NSTableView в xib, аз го направих, но всички съм ги изтрил. Имам събитие отворих XIB в BBedit и потърсих NSTableView и там има 100% не един!
Така че, помогнете моля! Ако можех да разбера какво е NSView: 0x102535290, може би бих могъл да го проследя.
Помощ за спасяването на здравия ми разум много оценявам!
Гарет
Отговори:
1 за отговор № 1при мен е решено по този начин:
- премахнете източника на данни и делегиращите връзки от interfaceBuilder.
- направете свойство на изхода за вашия изглед на таблица във .h файла
във .m файла в applicationDidFinishLaunching метод задайте ръчно делегата и източника на данни за вашия преглед на таблица
[self.tableView setDelegate:self]; [self.tableView setDataSource:self];