iOS - 數組字典模型根據模型屬性key排序


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM