iOS:基于日期的排序信息在UITableView上修改

时间:2014-07-25 19:41:37

标签: ios objective-c uitableview sorting nsmutablearray

我有一个UITableView,我从服务器获取信息,我想根据修改日期对我的信息进行排序,请你在这个实现中帮助我,我该如何排序?

提前致谢!感谢回答部分的任何代码!

我从json修改的日期就像

 "dateModified": "2014-06-23T07:51:08.373Z"

我的ViewDidLoad

- (void)viewDidLoad
{
[super viewDidLoad];

_mapView.showsUserLocation = YES;
_mapView.delegate = self;

[ApiManager fetchCoordinates:^(id result) {
    newAnnotations = [NSMutableArray array];
    CLLocationCoordinate2D location;
    NSArray *array=(NSArray*)result;

    for (NSDictionary *dictionary in array)
    {

        MyAnnotation *newAnnotation;

        newAnnotation = [[MyAnnotation alloc] init];
        newAnnotation.company = dictionary[@"company"];
        newAnnotation.dateModified = dictionary[@"dateModified"];


        [newAnnotations addObject:newAnnotation];
    }
    [self.mapView addAnnotations:newAnnotations];

} failure:^(NSError *error) {

}];
}

我的表视图控制器

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: 
(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"Cell";

UITableViewCell *cell = [tableView 
dequeueReusableCellWithIdentifier:simpleTableIdentifier];

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
reuseIdentifier:simpleTableIdentifier];


MyAnnotation *newAnnotation=[newAnnotations objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"%@",newAnnotation.company];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",newAnnotation.dateModified];


return cell;
} 

1 个答案:

答案 0 :(得分:0)

您必须对数组进行排序。尝试这样的事情:

 self.sortedArray = [newAnnotations sortedArrayUsingComparator: ^(id obj1, id obj2) {
 MyAnnotation* ann1 = (MyAnnotation*)obj1;
 MyAnnotation* ann2 = (MyAnnotation*)obj2;

 NSComparisonResult result = [ann1.dateModified compare:ann2.dateModified]
 return result;

}];

其中sortedArray是私有财产:

@property(strong, nonatomic) NSArray *sortedArray;

此外,在cellForRowAtIndexPath:中,只有在您无法将它们出列时才分配新单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{

    static NSString *simpleTableIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];
    }


    MyAnnotation *newAnnotation=[self.sortedArray objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@",newAnnotation.company];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",newAnnotation.dateModified];


    return cell;
} 

请注意,我正在进行的日期比较实际上是一个字符串比较,它的作用只是因为您的日期格式为YYYY-MM-DD。

请注意,我没有测试这段代码,所以请把它当作一般方向,不要只是复制粘贴它。