最近在学习ios开发,使用OC语言。
遇到需要打乱对象数组的需求,解决方式如下:
- (NSArray *) randomArr:(NSArray *)arr {// 对数组乱序 arr = [arr sortedArrayUsingComparator:^NSComparisonResult(People *p1, People *p2) { //生成0或1 int seed = arc4random_uniform(2); NSLog(@"%d",seed); if (seed) { return 1; } else { return -1; } }]; return arr; }
其中要点为:
1.People类为自定义的类,传入函数的参数是People的对象数组。
2.使用比较器Comparator进行数组元素的两两比较。
3.使用arc4random_uniform(2)返回的结果为0或1,概率分别为50%,作为种子,随机选择返回-1或1,从而决定是否互换数组元素的位置。
4.函数最后返回成功乱序的对象数组。