Обратите внимание, где у меня есть NSLOG. Все, что отображается в журнале, это первые три элемента в nameSection. После некоторого тестирования я обнаружил, что он показывает, сколько ключей существует, потому что, если я добавлю ключ в список, он будет записывать четвертый элемент в журнал.
nameSection должен быть массивом строк, которые составляют массив ключей в файле plist.
файл plist имеет 3 словаря, каждый из которых содержит несколько массивов строк. Код выбирает словарь, с которым я работаю правильно, затем должен использовать имена массивов в качестве разделов в таблице, а строки в каждом массиве - как отображаемые в каждой ячейке.
, так что если в словаре, с которым я работаю, есть 3 массива, NSLOG отобразит 3 строки из первого массива:
2010-05-01 17: 03: 26.957 Контрольные списки [63926: 207] string0
2010-05-01 17: 03: 26.960 Контрольные списки [63926: 207] string1
2010-05-01 17: 03: 26.962 Контрольные списки [63926: 207] string2
затем остановитесь с: 2010-05-01 17: 03: 26.963 Контрольные списки [63926: 207] * Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: «* - [NSCFArray objectAtIndex:] : index (3) за пределами (3) '
если я добавил массив в словарь, он заносит в журнал 4 элемента вместо 3.
Надеюсь, это объяснение имеет смысл ...
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return [keys count];
}
-(NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger) section {
NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [names objectForKey:key];
return [nameSection count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSUInteger section = [indexPath section];
NSString *key = [keys objectAtIndex: section];
NSArray *nameSection = [names objectForKey:key];
static NSString *SectionsTableIdentifier = @"SectionsTableIdentifier";
static NSString *ChecklistCellIdentifier = @"ChecklistCellIdentifier ";
ChecklistCell *cell = (ChecklistCell *)[tableView
dequeueReusableCellWithIdentifier: SectionsTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ChecklistCell"
owner:self options:nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass:[ChecklistCell class]])
cell = (ChecklistCell *)oneObject;
}
NSUInteger row = [indexPath row];
NSDictionary *rowData = [self.keys objectAtIndex:row];
NSString *tempString = [[NSString alloc]initWithFormat:@"%@",[nameSection objectAtIndex:row]];
NSLog(@"%@",tempString);
cell.colorLabel.text = [tempArray objectAtIndex:0];
cell.nameLabel.text = [tempArray objectAtIndex:1];
return cell;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
}
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
-(NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section{
NSString *key = [keys objectAtIndex:section];
return key;
}