我正在處理基於視圖的可可中的TableView。在tableview數據源方法中,我想根據它們相關的對象的類型創建三個不同的單元格。
我的想法是在if語句之前爲單元格創建一個通用的id變量,然後將它轉換爲正確的單元格類型,如果我對它們所關聯的對象進行內省的話。 不幸的是,這個方法xcode抱怨通用單元格變量沒有我嘗試在裏面設置的屬性。它無法識別我在前一行中執行的投射。ID變量和鑄造可可
我知道這是一個非常基本的問題,但在objective-c/cocoa中解決這個問題的通常模式是什麼。
這裏是數據源的方法的代碼:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
GeneralVector *vector = [self.vectors objectAtIndex:row];
id cellView;
if ([[self.vectors objectAtIndex:row] isKindOfClass:[Vector class]]) {
cellView = (VectorTableCellView *)[tableView makeViewWithIdentifier:@"vectorCell" owner:self];
cellView.nameTextField.stringValue = vector.name;
} else if ([[self.vectors objectAtIndex:row] isKindOfClass:[NoiseVector class]]) {
cellView = (NoiseVectorTableCellView *)[tableView makeViewWithIdentifier:@"noiseVectorCell" owner:self];
} else {
cellView = (ComputedVectorTableCellView *)[tableView makeViewWithIdentifier:@"computedVectorCell" owner:self];
}
return cellView;
}
'NSView'也沒有名爲'nameTextField'的屬性,這意味着您的代碼將產生OP詢問的相同錯誤。 –