У мене є UITableView кожна клітина показує унікальний пункт меню, я хочу елементи сортувати у своєму списку, але ці пункти меню не надходять з масиву, а з об'єкта db
Приклад:
cellForRowAtIndexPath{
Menus_Items *menuItem = [menuCategory.hasMenuItems.allObjects objectAtIndex:indexPath.row];
lblMenuItemName.text = menuItem.name;
}
Як я можу сортувати пункти меню? Я міг би це зробити, якщо це масив, тобто
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];
Допоможіть, будь ласка. Спасибі заздалегідь
Відповіді:
1 для відповіді № 1menuCategory.hasMenuItems.allObjects
це масив, тому ви можете сортувати його, щоб отримати відповідний елемент. Ви можете впорядкувати його щоразу або зберігати розсортований кеш вмісту. Жоден із цих варіантів не є ідеальним.
Дійсно, ви хочете використати запит на отримання з aсортування дескриптора, який ідеально управляється контролером запиту на отримання. Зазвичай ви це зробите, використовуючи відносини "назад". Таким чином, ви створите вибірку та встановіть предикат на XXX = %@
, де XXX - це ім'я взаємозв'язку, а параметр, що постачається, - це menuCategory
.
Це припускає, що співвідношення 1: багато, якщо у нього багато: багатьом вам знадобиться інша форма предикатів.