方法一:
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排序的更多相关文章

  1. IOS中将字典转成模型对象

    作为IOS开发初级者今天学习了 如何将plist数据字典转成 数据对象数组中 .有点像C#中解析xml数据 的过程. apps.plist的xml数据是这样的 <?xml version=&qu ...

  2. iOS-字典转双模型的实现过程中需要关注的细节

    如果有以上结构的plist文件,那么应该怎么将其中的字典转换成模型? 显然一个模型已经无法搞定了,此时需要用到双数据模型(字典转模型). 我写了两种方式来实现模型的转换: 方法一 第一个模型:CarM ...

  3. IOS数组按中文关键字以字母序排序

    本文转载至 http://blog.csdn.net/xunyn/article/details/7882087 iosobjective cuser框架通讯 IOS项目中会用到对通讯录的联系人或是会 ...

  4. iOS 数组字典操作

    iOS开发中需要大量对dictionary和array进行操作,因此我们需要一种更加安全可靠的操作方法来避免不必要的crash.当然可以通过自定义dictionary 和array重载增删改查的方法来 ...

  5. python 列表字典按照字典中某个valu属性进行排序

    对用户名进行排序 1. 直接上代码 base_dn_list = [ {', 'tenant': 'HAD', 'role': {'roleID': 'project', 'roleName': '项 ...

  6. iOS开发—字典转模型,KVC设计模式

    iOS开发UI基础—字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组 ...

  7. iOS 字典自动生成模型

    在实际开发中,我们经常需要根据字典来建模型.每次都打那么一串代码,想想也是挺恶心的.可以自己给NSDictionary写一个分类,进行属性生成. NSDictionary+Property.h #im ...

  8. KVC简介 -字典转模型,模型转字典

    // 下面两个方法.都属于 KVC 的方法 // KVC 是 cocoa 的大招.间接给对象属性设置数值 // 程序运行过程中,动态给对象属性设置数值.不关心 .h 中是怎样定义的 //      仅 ...

  9. [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}

    IOS数组.字典.NSNumber 新写法—— @[].@{}   //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...

随机推荐

  1. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  2. JAVA自学笔记23

    JAVA自学笔记23 1.多线程 1)引入: 2)进程 是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程: 单进程的计算机只能做一件事情,而现在 ...

  3. 咏南ISAPI中间件

    咏南ISAPI中间件 只支持WINDOWS服务器部署,中间件作为IIS的ISAPI插件部署. 基于WINDOWS的IIS,使用HTTP.SYS通讯,不依赖任何三方控件. 可以基于IIS HTTPS. ...

  4. Get Set的问题解决

  5. Docker搭建带有访问认证的私有仓库

    2017年06月10日 17:30:26 阅读数:2581 以下步骤均为本人亲自踩坑,历经数次失败,最终搭建成功 一.环境信息: 操作系统:CentOS 7 Docker版本:1.12.5 (更高版本 ...

  6. MySQL中的isnull、ifnull和nullif函数用法

    isnull(expr) 如expr为null,那么isnull()的返回值为1,否则返回值为0. mysql>select isnull(1+1); ->0 mysql>selec ...

  7. C# 之 批量插入数据到 SQLServer 中

    创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如 ...

  8. Libreoffice 各类文件转换的filtername

    LIBREOFFICE_DOC_FAMILIES = [ "TextDocument", "WebDocument", "Spreadsheet&qu ...

  9. Android 蓝牙开发

    今天给大家带来蓝牙开发的基础,主要展示的是程序搜到蓝牙会通过list展示出来,并实时排序,远近与信号强弱 首先我们要有次jar包 watermark/2/text/aHR0cDovL2Jsb2cuY3 ...

  10. python3 + flask + sqlalchemy +orm(1):链接mysql 数据库

    1.pycharm中新建一个flask项目 2.按装flask.PyMySQL.flask-sqlalchemy 3.项目下面新建一个config.py 文件 DEBUG = True #dialec ...