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 =; 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] !=) {
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] !=) {
str = [str stringByAppendingString:@","];
}
str = [str stringByAppendingFormat:@"%@:%@",s,value];
}
NSLog(@"str:%@",str);
return str;
}
iOS - 数组字典模型根据模型属性key排序的更多相关文章
- IOS中将字典转成模型对象
作为IOS开发初级者今天学习了 如何将plist数据字典转成 数据对象数组中 .有点像C#中解析xml数据 的过程. apps.plist的xml数据是这样的 <?xml version=&qu ...
- iOS-字典转双模型的实现过程中需要关注的细节
如果有以上结构的plist文件,那么应该怎么将其中的字典转换成模型? 显然一个模型已经无法搞定了,此时需要用到双数据模型(字典转模型). 我写了两种方式来实现模型的转换: 方法一 第一个模型:CarM ...
- IOS数组按中文关键字以字母序排序
本文转载至 http://blog.csdn.net/xunyn/article/details/7882087 iosobjective cuser框架通讯 IOS项目中会用到对通讯录的联系人或是会 ...
- iOS 数组字典操作
iOS开发中需要大量对dictionary和array进行操作,因此我们需要一种更加安全可靠的操作方法来避免不必要的crash.当然可以通过自定义dictionary 和array重载增删改查的方法来 ...
- python 列表字典按照字典中某个valu属性进行排序
对用户名进行排序 1. 直接上代码 base_dn_list = [ {', 'tenant': 'HAD', 'role': {'roleID': 'project', 'roleName': '项 ...
- iOS开发—字典转模型,KVC设计模式
iOS开发UI基础—字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组 ...
- iOS 字典自动生成模型
在实际开发中,我们经常需要根据字典来建模型.每次都打那么一串代码,想想也是挺恶心的.可以自己给NSDictionary写一个分类,进行属性生成. NSDictionary+Property.h #im ...
- KVC简介 -字典转模型,模型转字典
// 下面两个方法.都属于 KVC 的方法 // KVC 是 cocoa 的大招.间接给对象属性设置数值 // 程序运行过程中,动态给对象属性设置数值.不关心 .h 中是怎样定义的 // 仅 ...
- [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}
IOS数组.字典.NSNumber 新写法—— @[].@{} //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...
随机推荐
- 使用 OpenSessionInViewFilter 配置加载
1.使用 OpenSessionInViewFilter
- C. Playing Piano 动态规划
题目意思是给你一个n长度的数字串为a,让你构造一个n长度的数字串b值都为1-5满足以下条件: 正常的dfs暴力构造会超时,我试过了.. 可以开一个二维数组dp[i][j]用来表示b的第i个数字为j是否 ...
- [Web 前端] mobx教程(三)-在React中使用Mobx
copy from : https://blog.csdn.net/smk108/article/details/85053903 Mobx提供了一个mobx-react包帮助开发者方便地在React ...
- 关于Mysql表InnoDB下插入速度慢的解决方案
最近做了 server_log 日志数据库记录,仅仅插入,由平台来获取数据进行分析的需求. 但是内部反馈插入数据库记录非常耗时,我就很纳闷了,一个insert怎么会 30-50ms 呢?按说应该在 0 ...
- 【转】Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)
本文转自:http://www.wjdiankong.cn/wireshark%E5%92%8Cfiddler%E5%88%86%E6%9E%90android%E4%B8%AD%E7%9A%84tl ...
- SSE图像算法优化系列二十三: 基于value-and-criterion structure 系列滤波器(如Kuwahara,MLV,MCV滤波器)的优化。
基于value-and-criterion structure方式的实现的滤波器在原理上其实比较简单,感觉下面论文中得一段话已经描述的比较清晰了,直接贴英文吧,感觉翻译过来反而失去了原始的韵味了. T ...
- debian linux sudo 无法执行以添加普通用户到sudo
安装debian时,默认创建了root用户,和一个普通用户: 用普通用户登录电脑,无法执行sudo命令: 查看 /etc/sudoers 无此文件: 那么说明,本机没有安装sudo 解决方式: 终端 ...
- PL/SQL学习笔记之事务
一:事务自动提交的开启与关闭 1)开启事务自动提交:则每一个INSERT,UPDATE或DELETE命令执行时,都提交一次事务. SET AUTOCOMMIT ON; 2)关闭事务自动提交:则执行到C ...
- [Chrome插件] SelectJd(京东自营筛选器) v1.0.0 发布
如今京东的商品列表已经没有"自营"筛选了,只有"京东物流"筛选.导致找商品时不方便. 于是我开发了一下Chrome插件--SelectJd(京东自营筛选器). ...
- 【Python】解析Python中的条件语句和循环语句
1.if语句 if语句有好几种格式,比如: if condition: statement 使用 if ... else ...: if condition: statement(1) else: s ...