2009-12-05 163 views
0

我有一個自定義對象的數組。這些對象包括一個字典。 事情是這樣的:通過包含在自定義對象中的字典對自定義對象數組進行排序:如何?

CustomDataModel *dataModel; 

dataModel.NSString 
dataModel.NSDictionary 
dataModel.image 

我想通過在字典中的一個對象進行排序:

dataModel.NSDictionary [email protected]"Name" 

數據模型被加載到一個NSArray。我現在想通過字典中的@「Name」鍵進行排序。這是NSSortDescriptor可以處理的嗎?基本排序工作得很好,只是還沒有想通這一個尚未...

回答

1

你的問題並不完全清楚我的,但你可以嘗試在你的NSArray像這樣:

- (NSArray *)sortedItems:(NSArray*)items; 
{ 
    NSSortDescriptor *sortNameDescriptor = 
         [[[NSSortDescriptor alloc] 
          initWithKey:@"Name" ascending:NO] 
          autorelease]; 

    NSArray *sortDescriptors = 
         [[[NSArray alloc] 
          initWithObjects:sortNameDescriptor, nil] 
          autorelease]; 

    return [items sortedArrayUsingDescriptors:sortDescriptors]; 
} 
+0

這陣列是我想出了作爲溶液好吧,但是,我不確定它會起作用,因爲NSDictionary。無論如何,工程就像一個魅力!感謝您的幫助和確認,馬特。 – Jordan

0
//Sort an array which holds different dictionries - STRING BASED - Declare it in the .h 
    - (NSArray *)sortStringsBasedOnTheGivenField:(id)dictionaryKey arrayToSort:(NSMutableArray *)arrayToHoldTemp ascending:(BOOL)ascending { 
     NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:dictionaryKey ascending:ascending selector:@selector(localizedCaseInsensitiveCompare:)] ; 
     NSArray *descriptors = [NSArray arrayWithObject:nameDescriptor]; 
     [arrayToHoldTemp sortUsingDescriptors:descriptors]; 
     [nameDescriptor release]; 
     return arrayToHoldTemp; 
    } 

用法:

self.mainArrayForData = [NSArray arrayWithArray:[self sortNumbersBasedOnTheGivenField:@"Name" arrayToSort:arrayWhichContainsYourDictionries ascending:YES]]; 

上述方法有利於保持字典

相關問題