对键和cellForRowAtIndexPath进行排序

时间:2013-05-16 07:44:10

标签: objective-c sorting nsdictionary

我是iOS编程的新手。我必须在我的NSDictionary中对我的键进行排序,或者更像是按照我的键的顺序排序。

我现在的钥匙是这样的;

哦!我的密钥没有值,因为它们是从我的XML中取出的。

NSDictionary(称为GradDict);

2012 S1
2012 S2

我希望它像这样;

2012 S2
2012 S1

以下是我的排序代码;

在parserDidEndDocument中:

NSEnumerator *enumerator = [gradDict keyEnumerator];
id key;

while ((key = [enumerator nextObject])) {
    NSLog(@"Key:%@",key);
    NSLog(@"%@", [gradDict objectForKey:key]);

}
self.sort = [key sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

在cellForRowAtIndexPath中:

ModuleCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ModuleCell"];

if (!cell)
{
    cell = [[[NSBundle mainBundle] loadNibNamed:@"ModuleCell" owner:nil options:nil] objectAtIndex:0];
}

NSString *period = [self.sort objectAtIndex:indexPath.section];
NSMutableArray *periodArray = [gradDict objectForKey:period];
Module *m = [periodArray objectAtIndex:indexPath.row];

[cell.moduleNameLabel setText:[m moduleName]];
[cell.moduleCreditLabel setText:[[NSString alloc] initWithFormat:@"%d", [m moduleCredits]]];
[cell.moduleGradeLabel setText:[m moduleGrade]];
cell.contentView.backgroundColor = [UIColor colorWithRed:0.75 green:0.93 blue:1 alpha:1];
[self.tableView setSeparatorColor:[UIColor colorWithRed:0.55 green:0.55 blue:0.55 alpha:1]];

return cell;

我是否错误地进行了分类? 我怎么做cellForRowAtIndexPath?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你需要对字典中的数据进行排序,对吗? 但是不保存字典排序。您可以对键进行排序,然后创建一个数组。