方法一: NSArray *sortArray = [arrayM sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { SDHomeNewTaskModel *model1 = obj1; SDHomeNewTaskModel *model2 = obj2; if ([model1.distance floatValue] > [model2.distance floatValue]) { return NSOrderedDescending;//降序 }else if ([model1.distance floatValue] > [model2.distance floatValue]){ return NSOrderedAscending;//升序 }else { return NSOrderedSame;//相等 } }]; for (SDHomeNewTaskModel *model in sortArray) { NSLog(@"distance3:------> %@", model.distance); }
方法二: NSMutableArray *arr = [NSMutableArray array]; for (int i =0; i < arrayM.count; i ++) { SDHomeNewTaskModel *model = arrayM[i]; [arr addObject:model]; NSLog(@"distance2:------> %@", model.distance); } //这里类似KVO的读取属性的方法,直接从字符串读取对象属性,注意不要写错ascending:指定一个集合是否按照升序(YES)还是降序(NO) NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"distance" ascending:YES]; //这个数组保存的是排序好的对象 NSArray *arr = arrayM; NSArray *tempArray = [arr sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; // 输出排序结果 for (SDHomeNewTaskModel *model in tempArray) { NSLog(@"distance3:------> %@", model.distance); }