iOS开发之由model组成的数组的排序

在iOS开发中我们经常遇到列表,通常我们会定义一个可变数组,然后将列表的每列装在一个model里,有时我们会遇到这样的需求:将列表数据按照某个字段进行排序,比如说:根据年龄或者等级,或者财富等等。

比如一个model(模型)如下:

#import <Foundation/Foundation.h>

/**
 *  观众信息模型
 */
@interface AudienceInfoModel : NSObject

/**
 *  年龄
 */
@property (copy, nonatomic)NSString *age;
/**
 *  粉丝数量
 */
@property (assign, nonatomic)NSInteger fanCount;
/**
 *  金币数量
 */
@property (assign, nonatomic)NSInteger goldCount;

/**
 *  等级
 */
@property (assign, nonatomic)NSInteger userLvName;//普通用户等级
/**
 *  用户identifier
 */
@property (assign, nonatomic)NSInteger userid;

@end

假设有一个可变的数组NSMutableArray *audienceArr,audienceArr装有若干的AudienceInfoModel,现在要求根据model的用户等级的属性给观众升序排序,则我们可以作如下操作:

//创建排序描述者
NSSortDescriptor *levelSD = [NSSortDescriptor sortDescriptorWithKey:@"userLvName" ascending:YES];//ascending后面YES表示升序,NO表示降序
audienceArr = [[audienceArr sortedArrayUsingDescriptors:@[levelSD]] mutableCopy];
//audienceArr = [audienceArr sortUsingDescriptors:@[levelSD]];也可以

如果需求是先根据model的用户等级进行排序,如果等级相同的再根据金币数量排序则可以按照如下操作:

//创建两个排序描述者(有先后之分)
NSSortDescriptor *levelSD = [NSSortDescriptor sortDescriptorWithKey:@"userLvName" ascending:YES];//ascending后面YES表示升序,NO表示降序
NSSortDescriptor *goldSD = [NSSortDescriptor sortDescriptorWithKey:@"goldCount" ascending:YES];//ascending后面YES表示升序,NO表示降序
audienceArr = [[audienceArr sortedArrayUsingDescriptors:@[levelSD,goldSD]] mutableCopy];

当你打算放弃梦想时,告诉自己再多撑一天、一个星期、一个月,再多撑一年吧。你会发现,拒绝退场的结果令人惊讶。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,569评论 25 708
  • 先来看下面的对比照,或许更容易理解一些。 libsqlite3.0.tbd 只是一个快捷方式,其实也是指向libs...
    管乐_VICTOR阅读 981评论 0 1
  • 01 最近有的人看了我的文章给我留言:“好一碗鸡汤啊!”我愣了一下,其实,我还蛮不喜欢别人把我的文章称为鸡汤的。昨...
    永远的迷之喵喵阅读 1,601评论 0 6
  • 人很简单 简单的只有两笔 人很复杂 复杂到会有多张面孔 用简单的字体书写复杂的人性 我有些愕然 不知该如何形容 太...
    王子真心阅读 107评论 0 0