公司项目首页有个双排的collectionView,今天给了需求要求每个用户打开第一页显示的6条数据都不一样,也就是要将服务端返回的数据乱序排列,苦思冥想了许久,最终使用了一个while完成了需求,下面直接上代码,原理注释中有
/*
* @brief 将数组随机打乱
*/
- (NSArray *)gk_randomArray {
// 转为可变数组
NSMutableArray * tmp = self.mutableCopy;
// 获取数组长度
NSInteger count = tmp.count;
// 开始循环
while (count > 0) {
// 获取随机角标
NSInteger index = arc4random_uniform((int)(count - 1));
// 获取角标对应的值
id value = tmp[index];
// 交换数组元素位置
tmp[index] = tmp[count - 1];
tmp[count - 1] = value;
count--;
}
// 返回打乱顺序之后的数组
return tmp.copy;
}
该方法循环次数为数组的长度,如有其他更好的方法还望告知