/ / Об'єкт бази даних сортування - ios, core-data

Об'єкт бази даних сортування - ios, core-data

У мене є 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 для відповіді № 1

menuCategory.hasMenuItems.allObjects це масив, тому ви можете сортувати його, щоб отримати відповідний елемент. Ви можете впорядкувати його щоразу або зберігати розсортований кеш вмісту. Жоден із цих варіантів не є ідеальним.

Дійсно, ви хочете використати запит на отримання з aсортування дескриптора, який ідеально управляється контролером запиту на отримання. Зазвичай ви це зробите, використовуючи відносини "назад". Таким чином, ви створите вибірку та встановіть предикат на XXX = %@, де XXX - це ім'я взаємозв'язку, а параметр, що постачається, - це menuCategory.

Це припускає, що співвідношення 1: багато, якщо у нього багато: багатьом вам знадобиться інша форма предикатів.