- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 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
进行排序?
最佳答案
这是您将在要排序的 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 等)。 ascending 属性是一个 bool 值,表示您是否希望按升序或降序返回排序后的值。选择器属性是一种用于比较对象属性的方法。
现在回到排序描述符的NSArray
。此时您将开始构建排序描述符数组。
NSArray *sortDescriptorArray = [[NSArray alloc] initWithObjects:time1Descriptor, nil];
并将这个排序描述符数组传递给原始方法:- (void)sortUsingDescriptors:(NSArray *)sortDescriptors
[myArrayOfLessions sortUsingDescriptors:sortDescriptorArray];
您原来的类(class)数组现已排序。
关于objective-c - NSMutableArray sortUsingDescriptors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9316209/
我有 NSMutableArray“days”,其中包含 7 个 NSMutableArrays,7 个 NSMutableArrays 包含类 Lesson。 @interface Lesson :
以下方法: - (NSMutableArray*) timeSortedBegins { NSMutableArray* begins = [self.spans valueForKey: @
我是一名优秀的程序员,十分优秀!