方法一: 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); }
方法三: -(NSString*)stringWithDict:(NSDictionary*)dict { NSArray*keys = [dict allKeys]; NSArray*sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) { return [obj1 compare:obj2 options:NSNumericSearch]; }]; NSString *str = @""; for(NSString*categoryId in sortedArray) { id value = [dict objectForKey:categoryId]; if([value isKindOfClass:[NSDictionary class]]) { value = [self stringWithDict:value]; } NSLog(@"[dict objectForKey:categoryId] === %@",[dict objectForKey:categoryId]); if([str length] !=0) { str = [str stringByAppendingString:@";"]; } str = [str stringByAppendingFormat:@"%@:%@",categoryId,value]; } return str; }
方法四: -(NSString *)getNeedSignStrFrom:(id)obj{ NSDictionary *dict = obj;
NSArray *arrPrimary = [dict.allKeys mutableCopy];
NSArray *arrKey = [arrPrimary sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){ NSComparisonResult result = [obj1 compare:obj2]; return result==NSOrderedDescending;//NSOrderedAscending 倒序 }]; NSString*str =@""; for (NSString *s in arrKey) { id value = dict[s]; if([value isKindOfClass:[NSDictionary class]]) { value = [self getNeedSignStrFrom:value]; } if([str length] !=0) { str = [str stringByAppendingString:@","]; } str = [str stringByAppendingFormat:@"%@:%@",s,value]; } NSLog(@"str:%@",str); return str; }