按日期对自定义对象数组进行排序和分区

时间:2016-02-19 15:48:16

标签: ios objective-c arrays sorting nsdate

我有一系列自定义对象,其中包含日期收入。该对象名为Game

我使用compare对对象数组进行了排序:

- (NSArray*)sortByDate:(NSArray*)objects
{
    NSArray *sorted = [objects sortedArrayUsingComparator:^(id firstObject, id secondObject) {
        Game *firstGameObject = (Game*)firstObject;
        Game *secondGameObject = (Game*)secondObject;
        return [(NSDate*)firstGameObject.date compare:(NSDate*)secondGameObject.date];
    }];

    return sorted;
}

我想按日期对它们进行排序,然后将它们设置为UITableView按月和年划分(2013年4月,2015年10月等等)

我尝试将日期排序为MMMM YYYY格式,但是它们在数组中以错误的顺序添加。

- (NSArray*)getSectionsTitles:(NSArray*)objects
{
    NSMutableSet *mutableSet = [[NSMutableSet alloc] init];

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.locale = [NSLocale currentLocale];
    dateFormatter.timeZone = calendar.timeZone;
    [dateFormatter setDateFormat:@"MMMM YYYY"];

    for (Game *game in objects)
    {
        NSString *sectionHeading = [dateFormatter stringFromDate:game.date];
        [mutableSet addObject:sectionHeading];
    }

    return mutableSet.allObjects;
}

1 个答案:

答案 0 :(得分:1)

请使用contactsArrayListNSMutableArray不维护订单。你可以这样做。

// Game.h

NSMutableSet

//你的viewcontroller或一些helperservice

#import <Foundation/Foundation.h>

@interface Game : NSObject

@property (nonatomic, strong) NSDate *beginDate;
@property (nonatomic, assign) NSInteger revenue;

@end