NSMutableArray排序

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

在此输入图像描述

我在单元格中有5个NSMutableArrays.我需要按一个值对单元格进行排序.示例我需要按时间对单元格进行排序.

[MyArray1 sortUsingSelector:@selector(compare:)];
Run Code Online (Sandbox Code Playgroud)

但我将如何与其他4个NSMutableArray在单元格?

And*_*rev 5

将您的单元格数据存储在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,则需要更改strongretain属性定义并将其添加release到所需位置以避免内存泄漏.