Mám UITableView, každá bunka zobrazuje jedinečnú položku ponuky. Chcem, aby sa položky v zozname zoradili, ale tieto položky ponuky nepochádzajú z poľa, ale z objektu db.
Príklad:
cellForRowAtIndexPath{
Menus_Items *menuItem = [menuCategory.hasMenuItems.allObjects objectAtIndex:indexPath.row];
lblMenuItemName.text = menuItem.name;
}
Ako môžem zoradiť položky ponuky? Mohol som to urobiť, keby išlo o pole, t.
NSSortDescriptor *orderSort = [[NSSortDescriptor alloc] initWithKey:@"order" ascending:NO];
// String are alphabetized in ascending order
NSSortDescriptor *strNameSort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
// Combine the two
NSArray *sortDescriptors = @[orderSort, strNameSort];
arrCategories = [DatabaseHelper getAllData:@"Menus_cat" offset:0 predicate:[NSPredicate predicateWithFormat:@"ofOutlet == %@",outletsObject] sortDescriptor:nil];
// sortedArrayUsingDescriptor is the method use to sort an array which is having multiple parameters in sort descriptor
arrCategories = [arrCategories sortedArrayUsingDescriptors:sortDescriptors];
Pomoc prosím. Vopred ďakujem
odpovede:
1 pre odpoveď č. 1menuCategory.hasMenuItems.allObjects
je pole, takže ho môžete zoradiť tak, aby ste dostali príslušnú položku. Dalo by sa to usporiadať zakaždým, alebo si ponechať triedenú vyrovnávaciu pamäť obsahu. Ani jedna z týchto možností nie je ideálna.
Naozaj chcete použiť požiadavku na načítanie pomocoudeskriptor triedenia, ideálne spravovaný radičom žiadosti o načítanie. Zvyčajne by ste to robili pomocou vzťahu „dozadu“. Takže vytvoríte načítanie a nastavíte predikát na XXX = %@
, kde XXX je názov vzťahu a zadaný parameter je menuCategory
.
Toto predpokladá, že vzťah je 1: veľa, ak je veľa: veľa budete potrebovať inú formu predikátu.