我在1-4的NSMutableArray中存储了4个唯一的数字。我已经通过使用此代码完成了这项工作:
storeArray = [[NSMutableArray alloc] init];
BOOL record = NO;
int x;
for (int i=1; [storeArray count] < 4; i++) //Loop for generate different random values
{
x = arc4random() % 4;//generating random number
if(i==1)//for first time
{
[storeArray addObject:[NSNumber numberWithInt:x]];
}
else
{
for (int j=0; j<= [storeArray count]-1; j++)
{
if (x ==[[storeArray objectAtIndex:j] intValue])
record = YES;
}
if (record == YES)
{
record = NO;
}
else
{
[storeArray addObject:[NSNumber numberWithInt:x]];
}
}
}
然后我可以使用storeArray [1]打印出数字等等。
问题是我想在这里打印数字。
[option1 setTitle:questions[r][storeArray[0]] forState: UIControlStateNormal];
[option2 setTitle:questions[r][storeArray[1]] forState: UIControlStateNormal];
[option3 setTitle:questions[r][storeArray[2]] forState: UIControlStateNormal];
[option4 setTitle:questions[r][storeArray[3]] forState: UIControlStateNormal];
我怎么能这样做?因为当我这样做时我得到线程sigbrt错误?
答案 0 :(得分:0)
问题是您的算法有问题,并且当发生冲突时因为您试图保持数字唯一,您不会记录任何内容,因此您的数组可能并不总是预期的长度。实际上,你的情况有91%的可能发生这种情况,所以它看起来一直都在发生。
不要尝试编写自己的算法,只需使用现有的类。只需使用NSSet即可保证数组中数字的唯一性。
NSMutableSet *set = [[NSMutableSet alloc] init];
while(set.count < 4) {
int x = arc4random() % 4;
[set addObject:[NSNumber numberWithInteger:x]];
}
NSArray * storeArray = [set allObjects];