iOS数组乱序

公司项目首页有个双排的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;
}

该方法循环次数为数组的长度,如有其他更好的方法还望告知

你可能感兴趣的:(iOS数组乱序)