Mam UITableView każda komórka pokazuje unikalny element menu Chcę, aby elementy były sortowane na mojej liście, ale te elementy menu nie pochodzą z tablicy, ale z obiektu db
Przykład:
cellForRowAtIndexPath{
Menus_Items *menuItem = [menuCategory.hasMenuItems.allObjects objectAtIndex:indexPath.row];
lblMenuItemName.text = menuItem.name;
}
Jak mogę sortować pozycje menu? Mógłbym to zrobić, gdyby to była tablica, tj.
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];
Prosimy o pomoc. Z góry dziękuję
Odpowiedzi:
1 dla odpowiedzi № 1menuCategory.hasMenuItems.allObjects
jest tablicą, dzięki czemu można ją posortować, aby uzyskać odpowiedni element. Możesz to posortować za każdym razem lub zachować posortowaną pamięć podręczną zawartości. Żadna z tych opcji nie jest idealna.
Naprawdę chcesz użyć żądania pobierania zdeskryptor sortowania, najlepiej zarządzany przez kontroler żądania pobierania. Zwykle robiłbyś to, używając relacji „wstecz”. Więc tworzysz pobieranie i ustawiasz predykat na XXX = %@
, gdzie XXX to nazwa relacji, a podany parametr to menuCategory
.
Zakłada się, że relacja wynosi 1: wielu, jeśli jest ich wiele: wielu będzie potrzebować innej formy predykatu.