2014-05-12 82 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