Я пытаюсь заполнить данные ресторанов из Parse столбцами «Категория» в качестве заголовка раздела для списка элементов. Однако заголовки разделов для предметов отображаются случайным образом. Я хочу, чтобы они отображались, поскольку они хранятся в бэкэнд. Я попытался сделать [запрос orderByAscending: @ "Категория"]; который сортирует категории по алфавиту и не имеет изменений в результатах. Ниже приведена моя текущая реализация ...Закажите категории (столбец), поскольку они хранятся в Parse backend
-(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;
}
Не могли бы вы уточнить, что вы пытаетесь достичь? Вы упомянули, что хотите, чтобы данные о ресторанах были отображены, поскольку они хранятся в бэкэнд, но при использовании браузера данных анализа данных вы можете изменить порядок, как вам нравится. Вы также упомянули сортировку по алфавиту, это не то, что вы хотите? – Russell
Привет, Рассел ... Я не могу понять, в каком порядке заполняются заголовки разделов. Я хотел показать столбцы категорий как заголовки секций в том порядке, в котором он находится в браузере Parse. Вот скриншот http://imgur.com/iZojWjv раздел condiments должен отображаться первым, а остальные должны следовать за ним, но заголовки разделов скремблируются. –
Если вам нужно сохранить порядок, вы должны использовать массив. По определению словари являются неупорядоченными структурами, и когда вы получаете разделы в 'titleForHeaderInSection', нет гарантии того, какой заказ будет. – Russell