Для того, чтобы задать этот вопрос о заказе. Следующий класс MyObject
возвращает экземпляр со случайно сгенерированными именами категорий.
Я использую следующие dataSource
методы:
numberOfSections
доступ с помощью [dataSource count]
.
titleForSection
доступ с помощью [[dataSource objectAtIndex:indexPath.section] valueForKey:@"categoryName"]
.
numberOfRowsInSection
доступ с помощью [[[dataSource objectAtIndex:indexPath.section] valueForKey:@"myObjects"] count]
.
И, наконец, MyObject
для каждой строки вызывается с помощью [[[dataSource objectAtIndex:indexPath.section] valueForKey:@"myObjects"] objectAtIndex:indexPath.row]
в методе cellForRowAtIndexPath
.
Я использую следующий код для создания dataSource
, который отображает 9 категорий разделов, однако я немного застрял в порядке расположения этих категорий и данных внутри. Предположим, есть свойство NSDate
как часть класса MyObject
.
Вопрос: Как мне использовать это для отображения записей в порядке убывания?
- (void)createDatasource
{
NSInteger numberOfObjects = 10;
NSMutableArray *objects = [NSMutableArray arrayWithCapacity:numberOfObjects];
NSMutableArray *categories = [NSMutableArray arrayWithCapacity:numberOfObjects];
for (int i = 0; i < numberOfObjects; i++)
{
MyObject *obj = [[MyObject alloc] init];
[objects addObject:obj];
[categories addObject:obj.category];
[obj release];
}
NSSet *set = [NSSet setWithArray:categories];
NSMutableArray *dataSource = [[NSMutableArray alloc] initWithCapacity:[set count]];
for (NSString *categoryString in set)
{
NSMutableDictionary *mainItem = [[NSMutableDictionary alloc] initWithObjectsAndKeys:nil, @"categoryName", nil, @"myObjects", nil];
NSMutableArray *mainItemMyObjects = [NSMutableArray array];
[mainItem setValue:categoryString forKey:@"categoryName"];
for (MyObject *obj in objects)
{
if ([obj.category isEqualToString:categoryString])
{
[mainItemMyObjects addObject:obj];
}
}
[mainItem setValue:mainItemMyObjects forKey:@"myObjects"];
[dataSource addObject:mainItem];
[mainItem release];
}
NSLog (@"objects = %@\ncategories = %@\nset = %@\ndatasource = %@", objects, categories, set, dataSource);
}