我正在构建一个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 ?
}
答案 0 :(得分: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:)];
}
答案 1 :(得分:0)
当我读到它时,似乎每个字典只有一个键(和一个匹配的数组)。如果是,请在部分偏移处获取self.tableContent
中的字典。对于numberOfRowsInSection:
,返回contacts数组中的对象数,并titleForHeaderInSection:
返回密钥。从词典中获取allValues
和allKeys
可能比尝试跟踪每个词典中哪个键更简单。
(如果你有一个自定义对象数组而不是字典也可能更容易。然后,每个对象都可以有一个title属性和一个contacts数组属性。)