2014-05-12 84 views
0

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

请帮忙。在此先感谢

+0

为什么不在排序时排序? – limon

+0

我试过,但它在循环中效果不好 – user3504436

+0

向我们展示其余代码... –

回答

1

menuCategory.hasMenuItems.allObjects是一个数组,因此您可以对其进行排序以获取相应的项目。您可以每次对它进行排序或保留内容的排序缓存。这些选项都不理想。

真的,你想使用一个带有排序描述符的提取请求,最好由一个提取请求控制器进行管理。通常你会通过使用关系'倒退'来做到这一点。因此,您创建提取并将谓词设置为XXX = %@,其中XXX是关系名称,提供的参数是menuCategory

这是假设关系是1:很多,如果它很多:许多你需要一个不同的谓词形式。

+0

它为我工作:) – user3504436