2012-06-05 79 views
0

您好,我需要排序結果取這裏deasending順序是我的代碼如何排序核心數據讀取結果

NSManagedObjectContext *context = [appDelegate managedObjectContext]; 

NSError *error1; 
NSEntityDescription *entityDesc; 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
entityDesc=[NSEntityDescription entityForName:@"SubCategoryEntity" inManagedObjectContext:context]; 
[fetchRequest setEntity:entityDesc]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
              initWithKey:@"subCategoryId" ascending:NO]; 
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[sortDescriptor release]; 
NSArray *array = [context executeFetchRequest:fetchRequest error:&error1]; 

這裏我用「子類別」字符串類型,因此它顯示我在「個位數」正確的順序,但它不能工作在「兩位數」

這裏是我得到計數​​後「11」 「9」,「8」,「7」,「6」,「5」,「4」,「 3「,」2「,」1「,」10「,」0「

這裏我需要顯示」10「,」9「,」8「,」7「,」6「,」5「 ,「4」,「3」,「2」,「1」,「0」

我不是爲什麼它的攻絲可以幫助我的任何人

感謝您的提前。

回答

1

您以這種方式獲得訂單,因爲這是字符串排序的工作方式。您可以在SubCategoryEntity的定製SubCategory類中嘗試使用NSSortDescriptor與自定義compareSubCategoryId:選擇器。

更新

初始化你的某種描述是這樣的:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"subCategoryId" 
                  ascending:NO 
                  selector:@selector(compareSubCategoryId:)]; 

然後一個方法添加到您的自定義NSManagedObject子類:

- (NSComparisonResult)compareSubCategoryId:(id)otherObject { 
    int ownSubCatId = [[self subCategoryId] intValue]; 
    int otherSubCatId = [[otherObject subCategoryId] intValue]; 

    if (ownSubCatId < otherSubCatId) return NSOrderedAscending; 
    if (ownSubCatId > otherSubCatId) return NSOrderedDescending; 
    return NSOrderedSame; 
} 
+0

感謝響應可以請你跟我說清楚請 ? –