我有NSMutableArray“days”,其中包含7个NSMutableArrays,7个NSMutableArrays包含类Lesson。
@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
进行排序?
答案 0 :(得分:3)
这是您要对要排序的NSMutableArray
使用的方法。
- (void)sortUsingDescriptors:(NSArray *)sortDescriptors
因此,您希望对Lesson对象数组进行排序。 NSArray
参数将是NSSortDescriptor
个对象的数组。
NSSortDescriptor描述了您如何根据对象的属性对对象进行排序。因此,在对Lesson对象进行排序的情况下,您将对您拥有的部分或全部字符串属性进行排序。
这是Lesson对象的排序描述符,我们将在他们的time1属性上对它们进行排序。
NSSortDescriptor *time1Descriptor = [[NSSortDescriptor alloc] initWithKey:@"time1" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
关键参数是您要比较的对象属性(或者您可以使用time2,premedt等)。升序属性是一个布尔值,表示您是否希望以递增或递减的顺序返回已排序的值。 selector属性是一种用于比较对象属性的方法。
现在回到NSArray
排序描述符。此时,您将开始构建排序描述符数组。
NSArray *sortDescriptorArray = [[NSArray alloc] initWithObjects:time1Descriptor, nil];
将这个排序描述符数组传递给原始方法:- (void)sortUsingDescriptors:(NSArray *)sortDescriptors
[myArrayOfLessions sortUsingDescriptors:sortDescriptorArray];
您的原始课程数据现已排序。