我有一个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;
}
答案 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。
请注意,我没有测试这段代码,所以请把它当作一般方向,不要只是复制粘贴它。