我有一个NSMutableArray,它由一个sqlite查询填充,它按字母顺序返回我要在UITableview中显示的所有内容。
我知道要显示您在联系人应用程序等中看到的字母索引。
但是我不知道如何设置索引并从这个数组创建部分,以便每个部分都是字母表中的下一个字母。
如何获取我的数组并获取所需的部分和索引?
答案 0 :(得分:0)
让我们说你的数组(NSMutableArray myArray)字母看起来像这样:
(
{
headerTitle = V;
rowValues = (
{
id = 60;
name = "Valley of the Giants (2)";
"real_name" = "Valley of the Giants";
"wine_count" = " (2)";
}
);
},
{
headerTitle = R;
rowValues = (
{
id = 47;
name = "Rothbury Estate (6)";
"real_name" = "Rothbury Estate";
"wine_count" = " (6)";
},
{
id = 48;
name = "Rouge Homme (4)";
"real_name" = "Rouge Homme";
},
{
id = 45;
name = "Rawson\U2019s Retreat (7)";
"real_name" = "Rawson\U2019s Retreat";
},
{
id = 46;
name = "Rosemount Estate (36)";
"real_name" = "Rosemount Estate";
}
);
},
在表格视图中,设置节数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [myArray count];
}
部分中的行数:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [[[myArray objectAtIndex:section] objectForKey:@"rowValues"] count];
}
章节标题
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return [[myArray objectAtIndex:section] valueForKey:@"headerTitle"];
}
然后在cellForRowAtIndexPath中,你可以像这样访问你的信息
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *name= [[[[myArray objectAtIndex:indexPath.section] objectForKey:@"rowValues"] objectAtIndex:indexPath.row] valueForKey:@"name"];
// And create your cell like you usually do...
}
如果您需要按字母顺序对数组进行排序,可以这样做:
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"headerTitle" ascending:YES];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];