iOS数组排序 请求后,数组元素的排序 时间戳,最热,点赞数等
[ZOYSessionManager dataWithUrlString:GetVideoDataComment andParameter:@{@"id":userID,@"pageNo":@1,@"pageSize":@20} SucessBlock:^(id data) {
// NSDictionary * dic = [(NSData *)data objectFromJSONData];
self->_mode=[CommunityModel mj_objectWithKeyValues:data];
NSLog(@"mode%@",self->_mode);
for (self->_itemmodel in self->_mode.content) {
[self.accountArray addObject:self->_itemmodel];
NSMutableArray *timeArr = [[NSMutableArray alloc]init];
NSMutableDictionary *dateKeyArr = [[NSMutableDictionary alloc]init];
for(CommunitItemModel *acc in _accountArray) {
// 时间戳转成时间对象用于排序
int timer = [acc.date intValue];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timer];
[timeArr addObject:date];
// 时间戳转成时间戳字符串作为key,制作哈希表
NSNumber *dataNum = [NSNumber numberWithLongLong:timer];
NSString *datekey = [dataNum stringValue];
[dateKeyArr setObject:acc forKey:datekey];
}
// 3.将时间NSDate数组排序
NSArray *orderedDateArray = [timeArr sortedArrayUsingComparator:^NSComparisonResult(NSDate *date1, NSDate *date2) {
// 降序排序,最近的时间靠前
return [date2 compare:date1];
}];
// 4.根据排序好的时间数组对号入座将对象按时间排序
// 临时数组,保存排序后的对象数组
NSMutableArray *sortedAccounts = [[NSMutableArray alloc]init];
NSDate *datekey = [[NSDate alloc]init];
for (int i = 0; i<orderedDateArray.count; i++) {
datekey = orderedDateArray[i];
// 日期对象转换成时间戳字符串key
NSString *datekeys = [NSString stringWithFormat:@"%lld", (long long)[datekey timeIntervalSince1970]];
// 根据时间戳字符串key取对应的对象(哈希表)
[sortedAccounts addObject:[dateKeyArr objectForKey:datekeys]];
}
// 5.更新排序后的对象数组[ARC中不需要手动释放排序前的数组]
_accountArray = sortedAccounts;
self.dataArray = _accountArray;
// [self.dataArray addObject:self->_itemmodel];
[self.myTableView reloadData];
}
// NSLog(@"dataArray%@",self.dataArray);
[self.myTableView reloadData];
} failureBlock:^(NSError *error) {
NSLog(@"error is %@",error);
}];
NSLog(@"userID%@,@1,@20",userID);
self.myTableView.estimatedRowHeight = 80.0f;
self.myTableView.rowHeight = UITableViewAutomaticDimension;
// [self.myTableView reloadData];
}
整合后的小demohttps://github.com/ZOYOOPlus/TimeSortDemo
iOS数组排序 请求后,数组元素的排序 时间戳,最热,点赞数等的更多相关文章
- 对数组元素进行排序的方法总结(利用C++)
首先,对数组元素进行排序方法总结为以下两类: 一.简单排序算法(时间复杂度O(n*n)) 1.插入排序 2.选择排序 3.交换排序,即冒泡排序 二.先进排序算法(时间复杂度O(n*logn)) 1.快 ...
- c - 向一个排序好的数组插入一个数,插入后数组依然是排序好的
概述 因为这里只是演示插入1个数,这里我不用malloc再重新分配,而是将原先数组的腾出一个占位符. 完整代码如下: #include <stdio.h> #define LEN 6 // ...
- C语言:通过指针对数组元素进行排序
// // main.c // Pointer_array // // Created by ma c on 15/8/2. // Copyright (c) 2015年 bjsxt. All ...
- js将数组元素随机排序的方法
在群里看见的一个面试题,试了一下,还是可以做出来的,但是需要查资料,主要是岁一些方法了解的不清楚,可能这个跟我平时不太注重基础理论有关系,像什么构造函数啊,我根本就不关心什么叫构造函数,我一直都以为我 ...
- php数组的各种排序
转自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/11/2207494.html 如果你已经使用了一段时间PHP的话,那么,你应 ...
- 数组Array.sort()排序的方法
数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...
- shell脚本之数组基本操作及排序
数组的基本操作及排序 1.数组定义方法: ( 6 7 9 4 3 2) 0 1 2 3 4 5 #下标号 方法一: 数组名=(value0 value1 value2 -) 方法二: 数组名=([0] ...
- [Swift]LeetCode462. 最少移动次数使数组元素相等 II | Minimum Moves to Equal Array Elements II
Given a non-empty integer array, find the minimum number of moves required to make all array element ...
- 462. 最少移动次数使数组元素相等 II
给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输入: [1,2,3] 输出: 2 说明: 只 ...
随机推荐
- mysql字符串分割操作
SELECT '1,2,3,4,5,6,7,8' FROM dual; -- 列转行分割 ),) FROM () a JOIN mysql.help_topic b ); -- 测试 ),) as p ...
- 1_jenkins环境搭建
前言 为什么要使用jenkins 可以实现批量部署.管理 支持常见的版本控制工具,git, svn等 发展成熟,使用范围广,容易找到解决方案 插件丰富,可以满足自己的需求 什么是jenkins 简单的 ...
- uboot的配置文件在哪里
答:位于configs目录下,里面有各种各样板子的配置文件
- parted 分区
Linux下的GPT分区 GPT分区 这是另外一种分区,针对MBR分区,它有很多优点: (1)几乎突破了分区个数的限制. 在GPT分区表中最多可以支持128个主分区. (2)单个分区容量几乎没有限制. ...
- hadoop 3.1.1 安装
以下是本次搭建说使用的服务器 服务器IP分配 IP 节点名称 说明 192.168.172.130 master 主服务器 192.168.172.131 slave1 从服务器1 192.168.1 ...
- SSH免密码登录Linux
如果两台linux之间交互频繁,但是每次交互如果都需要输入密码,就会很麻烦,通过配置SSH就可以解决这一问题 下面就说下配置流程(下面流程在不同机器上全部操作一边) 1)cd ~到这个目录中 2)ss ...
- PAT1072. Gas Station (30)
题目的测试用例数据有问题! 第一个Case 应该是 G1 2.0 3.2 一直在想3.3分母的3怎么来了.ORZ #include <iostream> #include <ccty ...
- fork有关趣味题
第一题: //fork1.c #include <unistd.h> #include <stdio.h> int main(void) { ; ; i < ; i++) ...
- 01_MapReduce流程总结
1. MapReduce整体流程 1. 每个map,reduce都作为1个独立进程process启动(多进程并发方式,spark是多线程并发) 2. 由于进程空间独享,因此方便控制每个map, red ...
- 使用ASP.NET 的缓存机制的示例
if (HttpContext.Current.Cache["code_" + CodeType] == null) { SysCodeService codeService = ...