Я использую пример TableViewUpdates из WWDC # 2010. В основном Apple создает складные и расширяемые TableViews, нажимая на заголовок раздела. Данные для TableView создаются в viewWillAppear следующим образом:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
/*
Check whether the section info array has been created, and if so whether the section count still matches the current section count. In general, you need to keep the section info synchronized with the rows and section. If you support editing in the table view, you need to appropriately update the section info during editing operations.
*/
if ((self.sectionInfoArray == nil) || ([self.sectionInfoArray count] != [self numberOfSectionsInTableView:self.tableView])) {
// For each play, set up a corresponding SectionInfo object to contain the default height for each row.
NSMutableArray *infoArray = [[NSMutableArray alloc] init];
for (Play *play in self.plays) {
SectionInfo *sectionInfo = [[SectionInfo alloc] init];
sectionInfo.play = play;
sectionInfo.open = NO;
NSNumber *defaultRowHeight = [NSNumber numberWithInteger:DEFAULT_ROW_HEIGHT];
NSInteger countOfQuotations = [[sectionInfo.play quotations] count];
for (NSInteger i = 0; i < countOfQuotations; i++) {
[sectionInfo insertObject:defaultRowHeight inRowHeightsAtIndex:i];
}
[infoArray addObject:sectionInfo];
[sectionInfo release];
}
self.sectionInfoArray = infoArray;
[infoArray release];
}
}
Я заметил, что для моего случая, когда у меня много данных, это дорогостоящая операция. Я хотел бы кэшировать данные. Данные создаются каждый раз, когда они находятся в viewWillAppear. Поскольку я использую UINavigationController для переноса этого представления в стек, если я помещаю его в viewDidLoad, когда я отхожу от этого представления и возвращаюсь домой, я должен заново создать представление, viewDidLoad снова запустится, будет снова медленно
Я раньше не кэшировал данные, и мне было интересно, как это можно сделать? Прямо сейчас все данные для заголовков строк и строк находятся в базе данных. Поэтому, когда это представление помещается в стек, я беру данные и создаю таблицу. Я не знал, каким хорошим механизмом будет создание таблицы и каким-либо образом кэшировать представление или что-то такое, что ускоряет его загрузку при последующих нажатиях viewController. Спасибо.