Я пытаюсь заполнить данные о ресторанах из Parse данными столбца «Категория» в качестве заголовка раздела для списка элементов. Однако названия разделов для элементов отображаются случайным образом. Я хочу, чтобы они отображались так, как они хранятся в бэкэнде. Я пытался выполнить [запрос orderByAscending:@"Category"]; который сортирует категории в алфавитном порядке и не меняет результатов. Ниже приведена моя текущая реализация...
-(void) listAllItems {
PFQuery *query = [PFQuery queryWithClassName:[NSString stringWithString:self.restaurantName]];
[query whereKey:@"DinnerLunch" containsString:self.lunchDinnerPreference];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
for (PFObject *obj in objects) {
self.curatedItemDictionary = [[NSMutableDictionary alloc]init];
[_curatedItemDictionary setValue:[obj objectForKey:@"ItemName"] forKey:@"ItemName"];
[_curatedItemDictionary setValue:[obj objectForKey:@"Price"] forKey:@"Price"];
[_curatedItemDictionary setValue:[obj objectForKey:@"Category"] forKey:@"Category"];
[_curatedItemDictionary setValue:@"" forKey:@"ModifiableItems"];
_sectionsArray = [_sectionsDictionary objectForKey: [obj objectForKey:@"Category"]];
if(nil == _sectionsArray){
self.sectionsArray = [[NSMutableArray alloc]init];
}
[_sectionsArray addObject:_curatedItemDictionary];
[_sectionsDictionary setObject: _sectionsArray forKey: [obj objectForKey:@"Category"]];
NSLog(@"categories keys are %@", [self.sectionsDictionary allKeys]);
}
[self.tableView reloadData];
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return [_sectionsDictionary count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
NSArray *keys = [self.sectionsDictionary allKeys];
return [keys objectAtIndex:section];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSArray *keys = [self.sectionsDictionary allKeys];
id aKey = [keys objectAtIndex:section];
NSMutableArray *arr = [self.sectionsDictionary objectForKey:aKey];
return (arr) ? arr.count : 0;
}
titleForHeaderInSection
, нет гарантии, в каком порядке они будут. - person Russell   schedule 06.10.2015UICollectionView
для каждой категории, а затем, когда пользователь выбирает одну, вы можете загрузить все эти соответствующие элементы. - person Russell   schedule 07.10.2015