方法一: 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; }
