@interface BookCityBookModel : NSObject
@property (nonatomic, copy) NSString bookId;
@property (nonatomic, copy) NSString *bookName;
@end
1. Ordene en orden ascendente según un solo atributo
self.dataArray = [NewMembersModel mj_objectArrayWithKeyValuesArray:response[@"data"]];
// 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"bookName" ascending:YES];
// 排序结果
self.tempArr = [self.dataArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
2. Ordenar en orden ascendente y descendente según múltiples atributos
self.dataArray = [NewMembersModel mj_objectArrayWithKeyValuesArray:response[@"data"]];
// 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"bookName" ascending:YES];
NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"bookId" ascending:NO];
// 排序结果
self.tempArr = [self.dataArray sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sortDescriptor, sortDescriptor1, nil]];
Hay una cosa a tener en cuenta acerca de sortedArrayUsingDescriptors. Por supuesto, la matriz de variables de sortUsingDescriptors también existe. Cuando selecciona el valor de clave correspondiente para ordenar, generalmente es una ordenación numérica, y el valor correspondiente a la clave no puede ser de tipo NSString. El valor correspondiente a la clave es de tipo NSString, por lo que debes utilizar el siguiente método para transformarla.
[self.bookArray sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2){
BookCityBookModel *mode1 = obj1;
BookCityBookModel *mode2 = obj2;
if ([mode1.bookId integerValue] < [mode2.bookId integerValue]){
return NSOrderedAscending;
}else{
return NSOrderedDescending;
}
}];
NSLog(@"%@",self.bookArray);
for (int i = 0; i<self.bookArray.count; i++) {
BookCityBookModel *mode = self.bookArray[i];
NSLog(@"%@",mode.bookId);
}