2012-02-16 67 views
2

我有NSMutableArray「天」其中包含7個NSMutableArrays,7 NSMutableArrays包含類課。NSMutableArray sortUsingDescriptors

@interface Lesson : NSObject <NSCoding>{ 
    NSString *time1; 
    NSString *time2; 
    NSString *predmet; 
    NSString *namPrepod; 
    NSString *zamet; 
} 

之前我是做排序與sortedArrayUsingComparator,但現在我必須sortedArrayUsingDescriptors排序做;

sortedArrayUsingComparator樣子

chetNedel.sunday = [NSMutableArray arrayWithArray:[chetNedel.sunday sortedArrayUsingComparator:^(id cont1, id cont2) { return [[(Lesson *) cont1 time1] compare:[(Lesson *) cont2 time1]]; }]]; 
[chetNedel.days removeObjectAtIndex:0]; 
[chetNedel.days insertObject:chetNedel.sunday atIndex:0]; 

如何將sortedArrayUsingDescriptors進行排序?

回答

3

這是您要在要排序的NSMutableArray上使用的方法。

- (void)sortUsingDescriptors:(NSArray *)sortDescriptors 

所以,你想排序教程對象的數組。 NSArray參數將成爲NSSortDescriptor對象的數組。

NSSortDescriptor描述瞭如何根據屬性對對象進行排序。因此,在對課程對象進行排序的情況下,您將對某些或全部字符串屬性進行排序。

這是您的課程對象的排序描述符,我們將對它們的time1屬性進行排序。

NSSortDescriptor *time1Descriptor = [[NSSortDescriptor alloc] initWithKey:@"time1" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; 

關鍵參數是您想要比較的對象屬性(或者您可以使用time2,premedt等)。升序屬性是一個布爾值,表示您是否希望按遞增或遞減順序返回排序後的值。選擇器屬性是一種將用於比較對象屬性的方法。

現在回到排序描述符的NSArray。在這一點上,你將開始構建你的排序描述符數組。

NSArray *sortDescriptorArray = [[NSArray alloc] initWithObjects:time1Descriptor, nil]; 

而這個數組排序描述符的傳遞給原來的方法:- (void)sortUsingDescriptors:(NSArray *)sortDescriptors

[myArrayOfLessions sortUsingDescriptors:sortDescriptorArray]; 

你的教訓原來的陣列現在可以正確排序。

相關問題