Of course, the best approach is to put all the questions (or question numbers) sequentially into an array and then shuffle them.
See What is the best way to swap in NSMutableArray?
(NB , , , ):
1) ivar NSMutableArray *randomQuestionNumbers. , , 5 , 1-5 . :
randomQuestionNumbers = [NSMutableArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], [NSNumber numberWithInt:4], [NSNumber numberWithInt:5], nil];
2) , , .
[1,2,3,4,5] → [4,1,5,3,2],
3) , :
- (NSInteger) nextQuestionNumber {
NSInteger nextQuestionNumber = -1;
if ([randomQuestionNumbers count] > 0) {
nextQuestionNumber = (NSInteger) [randomQuestionNumbers objectAtIndex:0];
[randomQuestionNumbers removeObjectAtIndex:0];
}
return nextQuestionNumber;
}
, int . . , int, , 4. , , , - int 1 .. -1, , , , , , , .