如何排序UITableView部分

时间:2014-11-19 12:45:28

标签: ios objective-c uitableview nsdictionary

我有一个日期在里面的对象数组。 现在我需要在此日期之前将对象分组到UITableView中。 例如:

0-{10-14; Obj1};
1-{10-14; Obj2};
2-{10-15; Obj3};
3-{10-15; Obj4};

我需要像我这样在我的UITableView上查看它

10-14
    0-{10-14; Obj1};
    1-{10-14; Obj2};
10-15
    2-{10-15; Obj3};
    3-{10-15; Obj4};

要解决我接下来的事情;我用这段代码将我的数组拆分为NSDictationary:

NSMutableDictionary *preResult = [[NSMutableDictionary alloc] init];
for (ClientMessage *message in array) {
    NSMutableArray *mArray = [preResult objectForKey:message.formattedDate];
    if (mArray == nil) {
        mArray = [[NSMutableArray alloc] init];
        [preResult setObject: mArray forKey:message.formattedDate];
    }
    [mArray addObject:message];
}

我的表格视图显示了我想要的东西,但它显示的顺序错误; (我的数组按日期排序) 我知道我不能排序NSDictationary,在这种情况下,我如何在表视图中对我的值进行排序?或者是否有另一种方法可以在没有NSDictationary的情况下对我的值进行分组?

1 个答案:

答案 0 :(得分:0)

一旦您使用所有值加载了字典,您就会想要对字典中的每个数组进行排序......

for (NSString *key in [preResult allKeys])
{
    NSMutableArray *mArray = [preResult objectForKey:key];
      // sort array to achieve the desired result
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"formattedDate" ascending:YES];
    NSArray *sortedArray = [mArray sortedArrayUsingDescriptors:@[sortDescriptor]];
      // reset newly sorted array for key inside the dictionary
    [preResult sortedArray forKey:key];
}