Pav*_*vel -2 sorting objective-c uitableview nsmutablearray ios

我在单元格中有5个NSMutableArrays.我需要按一个值对单元格进行排序.示例我需要按时间对单元格进行排序.
[MyArray1 sortUsingSelector:@selector(compare:)];
Run Code Online (Sandbox Code Playgroud)
但我将如何与其他4个NSMutableArray在单元格?
将您的单元格数据存储在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
Run Code Online (Sandbox Code Playgroud)
DataContainer.m:
@implementation DataContainer
@synthesize date1, date2, upperTitle, mainTitle, subtitle;
@end
Run Code Online (Sandbox Code Playgroud)
然后你可以创建你DataContainer的(每个单元格一个)并将它们存储在一个中 NSMutableArray.
例如:
DataContainer *container = [[DataContainer alloc] init];
[container setDate1:[NSDate date]];
[container setMainTitle:@"blahblah"];
///...
[cellArr addObject:container];
Run Code Online (Sandbox Code Playgroud)
要对此数组进行排序,请使用:
cellArr = [cellArr sortedArrayUsingComparator:^(id cont1, id cont2) {
return [[(DataContainer *) cont1 date1] compare:[(DataContainer *) cont2 date1]];
}];
Run Code Online (Sandbox Code Playgroud)
然后在你的.中使用它们 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.
Run Code Online (Sandbox Code Playgroud)
请注意,如果您为项目使用ARC(自动引用计数),则此代码适用; 如果您不使用ARC,则需要更改strong为retain属性定义并将其添加release到所需位置以避免内存泄漏.