Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在index0处随机移动NSMUTABLEARRY例外项_Ios_Objective C - Fatal编程技术网

Ios 在index0处随机移动NSMUTABLEARRY例外项

Ios 在index0处随机移动NSMUTABLEARRY例外项,ios,objective-c,Ios,Objective C,有一个NSMutableArray,当我的用户按下一个按钮时,我希望数组中的所有项目都随机改变位置!!除了第一个 现在我有 -(void)shufflemyList{ NSLog(@"Un Shuffled array : %@",myList); NSMutableArray *array = [NSMutableArray arrayWithCapacity:0]; while ([myList count] > 0) { int index = arc4random() %

有一个NSMutableArray,当我的用户按下一个按钮时,我希望数组中的所有项目都随机改变位置!!除了第一个

现在我有

-(void)shufflemyList{

NSLog(@"Un Shuffled array : %@",myList);
NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];
while ([myList count] > 0)
{
    int index = arc4random() % [myList count];
    id objectToMove = [myList objectAtIndex:index];
    [array addObject:objectToMove];
    [myList removeObjectAtIndex:index]; }

// test
NSLog(@"Shuffled array : %@",array);
myList=array;  }
这可以完全洗牌列表。 除了第一项之外,有没有办法将整个列表洗牌?

只需添加两行即可

-(void)shufflemyList{

NSLog(@"Un Shuffled array : %@",myList);
NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];
// new code ---
[array addObject:myList[0]];
[myList removeObjectAtIndex:0];
// ---
while ([myList count] > 0)
{
    int index = arc4random() % [myList count];
    id objectToMove = [myList objectAtIndex:index];
    [array addObject:objectToMove];
    [myList removeObjectAtIndex:index]; }

// test
NSLog(@"Shuffled array : %@",array);
myList=array;  }
此外,最好使用“arc4random_uniform(n)”而不是“arc4random()%n”。从文档:

arc4random_uniform()将返回均匀分布的随机数 小于上界。arc4random_uniform()建议在 类似于“`arc4random()%上限”的构造,因为它避免了“模” 偏差“当上限不是二的幂时


这个话题对你来说可能会很有趣。这很有效!杀手!万分感谢!