NSMutableArray shuffle问题

时间:2012-05-08 20:27:30

标签: iphone nsmutablearray shuffle

我已经解决了包含终止方法的问题。

If(indexes==0){
endUp = YES;
}

感谢您指出正确的方向。这不是洗牌的问题。 Alessign

2 个答案:

答案 0 :(得分:2)

错误可能在您用来随机播放第一个数组的循环中。 你没有发布你的代码部分......是这样的吗?

for (int i=0; i<[indexes count]; i++){
// (...)
        [indexes removeObjectAtIndex:index]; 
// (...)
}

这可能会更好:

int arrayCount = [indexes count];
for (int i=0; i<arrayCount; i++){
// (...)
        [indexes removeObjectAtIndex:index]; 
// (...)
}

这个完整的代码运行良好,没有错误或崩溃:

int length = 10; 
NSMutableArray* indexes = [[NSMutableArray alloc] initWithCapacity:length];

for (int i=0; i<10; i++) [indexes addObject:[NSNumber numberWithInt:i]];
NSMutableArray*shuffle = [[NSMutableArray alloc] initWithCapacity:length];


int arrayCount = [indexes count];
for (int i=0; i<arrayCount; i++){

    int index = arc4random()%[indexes count];
    NSLog(@"___index: %i", index);
    NSLog(@"indexes: %@ ", indexes);

    [shuffle addObject:[indexes objectAtIndex:index]];
    [indexes removeObjectAtIndex:index]; 
    NSLog(@"shuffle: %@ ", shuffle);
}


for (int i=0; i<[shuffle count]; i++){
    int questionNumber = [[shuffle objectAtIndex:i] intValue] + 1; 
    NSLog(@"questionNumber: %i ", questionNumber);

}

答案 1 :(得分:-1)

我知道,无论如何,知道了!我实现了一个'if'语句来终止它! if ([indexes count] == 0)
{endProcess = YES}