我有一个 UITableView,每个单元格都显示唯一的菜单项 我希望项目在我的列表中排序,但这些菜单项不是来自数组而是来自数据库对象
示例:
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];
请帮忙。提前致谢
最佳答案
menuCategory.hasMenuItems.allObjects
是一个数组,因此您可以对其进行排序以获得适当的项目。您可以每次都对其进行排序或保留内容的排序缓存。这些选项都不是理想的。
实际上,您想要使用带有排序描述符的获取请求,最好由获取请求 Controller 管理。通常你会通过使用“向后”关系来做到这一点。因此,您创建提取并将谓词设置为 XXX = %@
,其中 XXX 是关系名称,提供的参数是 menuCategory
。
这是假设关系是 1:many,如果是 many:many,您将需要不同的谓词形式。
关于ios - 排序数据库对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23603506/