ios - 排序数据库对象

标签 ios core-data

我有一个 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/

相关文章:

iOS : how to add uiLabel on top of the background image?

ios - 音频的圆形进度条

iphone - iOS 6 中带有 Storyboard 的模态视图 Controller

iphone - 将 Isgl3d 输出捕获为图像

ios - 如何从核心数据(实体)中删除行 ios swift

ios - 使用检索到的核心数据

ios - 核心数据并发如何与 Swift 3 中的多线程一起工作?

ios - 如何检索用户创建的解析对象

ios - 如何使用 FetchResult Controller 正确添加附加部分?

ios - CoreData : Opening a standalone . xcdatamodeld 文件和更改当前模型版本