Не рекомендуется хранить данные для ваших ячеек в 5 массивах, не разделяйте их;создайте класс контейнера данных, сохраните все значения для каждой ячейки внутри одного объекта контейнера данных, а затем вы можете отсортировать массив с контейнерами данных по одному из значений.
например:
DataContainer.h:
@interface DataContainer : NSObject
{
NSDate *date1;
NSDate *date2;
NSString *upperTitle;
NSString *mainTitle;
NSString *subtitle;
}
@property (nonatomic, strong) NSDate *date1;
@property (nonatomic, strong) NSDate *date2;
@property (nonatomic, strong) NSString *upperTitle;
@property (nonatomic, strong) NSString *mainTitle;
@property (nonatomic, strong) NSString *subtitle;
@end
DataContainer.m:
@implementation DataContainer
@synthesize date1, date2, upperTitle, mainTitle, subtitle;
@end
Затем вы можете создать свои DataContainer
(по одному для каждой ячейки) и сохранить их в one NSMutableArray
.
например:
DataContainer *container = [[DataContainer alloc] init];
[container setDate1:[NSDate date]];
[container setMainTitle:@"blahblah"];
///...
[cellArr addObject:container];
Чтобы отсортировать этот массив, используйте:
cellArr = [cellArr sortedArrayUsingComparator:^(id cont1, id cont2) {
return [[(DataContainer *) cont1 date1] compare:[(DataContainer *) cont2 date1]];
}];
, а затем используйте их в своем cellForRowAtIndexPath:
DataContainer *container = [cellArr objectAtIndex:indexPath.row];
//container.date1, container.date2, container.upperTitle, container.mainTitle and container.subtitle are the values that you need for your cell.
Обратите внимание, что этот код подходит, если вы используете ARC (автоматический подсчет ссылок) для своего проекта;если вы не используете ARC, вам нужно изменить strong
на retain
в определениях свойств и добавить release
в необходимые места, чтобы избежать утечек памяти.