2

我正在构建一个以字典数组为源的 UITableView。每个字典都有一个字母作为键,一个联系人数组作为值,例如:键“A” - 值“Adam, Alex, Andreas”。我现在的问题是我无法获得每个部分的正确行数或部分标题......顺便说一下,我是 Objective-C 的新手,所以如果我的问题看起来很奇怪,我很抱歉。一些指导将不胜感激!

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    //tableContent is my array of dictionaries
    return [self.tableContent count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //here I don't know how to get the dictionary value array length that would be the
    //the number of contacts per letter
    return ?
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
    //here I don't know how to get the dictionary key to set as section title
    retrun ?
}
4

2 回答 2

2

您似乎无缘无故地将数据包装在数组中。如果您的数据只是一个字典,那对您来说会更容易

@property (nonatomic, strong) NSDictionary *tableContent;

...

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
  return [self.tableContent count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  NSString *key = [self tableView:nil titleForHeaderInSection:section];
  return [[self.tableContent objectForKey:key] count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
  return [[self sortedKeys] objectAtIndex:section];
}

- (NSArray *)sortedKeys;
{
  return [self.tableContent.allKeys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
}
于 2012-11-06T19:27:06.383 回答
0

当我读到它时,似乎每个字典只有一个键(和一个匹配的数组)。如果是这样,请获取位于self.tableContent节偏移量处的字典。numberOfRowsInSection:返回联系人数组中对象的数量并返回titleForHeaderInSection:键。从字典中获取allValuesallKeys从字典中获取可能比尝试跟踪每个字典中的哪个键更简单。

(如果你有一个自定义对象数组而不是字典,它也可能更容易。然后,每个对象都可以有一个 title 属性和一个 contacts 数组属性。)

于 2012-11-06T16:31:58.707 回答