0

我的 while 循环似乎不起作用。加载此视图时,应用程序冻结。当我删除包含 while 循环的代码部分时,应用程序不会冻结。

我正在寻找的是一段代码,它会导致同一个数组没有被选择两次。

@interface ThirdViewController ()

@end

@implementation ThirdViewController

...
NSString * Answer = @"";
NSArray * RAMArray;

...

- (void)NewQuestion
{
    NSString * PlistString = [[NSBundle mainBundle] pathForResource:@"Questions" ofType:@"plist"];
    NSMutableArray * PlistArray = [[NSMutableArray alloc]initWithContentsOfFile:PlistString];
    NSArray *PlistRandom = [PlistArray objectAtIndex: random()%[PlistArray count]];

    while (![PlistRandom isEqual: RAMArray])
    {
        NSArray *PlistRandom = [PlistArray objectAtIndex: random()%[PlistArray count]];
    }

    RAMArray = PlistRandom;
    ...
}

- (void)Check:(NSString*)Choise
{
    ...

    if ([Choise isEqualToString: Answer])
    {
        ...
        [self NewQuestion];
    }
}

- (IBAction)AnsButA:(id)sender
{
    UIButton *ResultButton = (UIButton *)sender;
    NSString *Click = ResultButton.currentTitle;

    [self Check:Click];
}
4

1 回答 1

3

我的猜测是,因为您在 while 循环中重新声明PlistRandom,内部声明的变量可能在while条件评估时超出范围。我认为您的问题是范围问题,只需将循环更改为此并查看是否有效:

while (![PlistRandom isEqual: RAMArray])
{
    PlistRandom = [PlistArray objectAtIndex: random()%[PlistArray count]];
}
于 2013-05-08T15:58:56.153 回答