xcode测验app:怎么不重复一个任务。来自plist文件

时间:2012-10-12 10:23:39

标签: xcode

我有iPhone的测验应用程序,我可以从plist文件中加载随机问题,我想询问大约20个问题;在我的plist文件中我还有20个,但我不希望在一个测验会话中重复一个问题。 这是我的plist文件`

<key>Domanda1</key>

    <dict>

    <key>immagine</key>

    <string>hpv</string>

    <key>Titolo</key>

    <string>Domanda numero 1</string>

    <key>Risposta1</key>

    <string>Risposta primaD1</string>

    <key>Risposta2</key>

    <string>Risposta seconda</string>

    <key>Risposta3</key>

    <string>Risposta terza</string>

    <key>Risposta4</key>

    <string>Risposta quarta</string>

    <key>Soluzione</key>

    <integer>1</integer>

</dict>

<key>Domanda2</key>

....... ` 我的观点controller.m

-(void)creaDomanda {

//scelta casuale tra le varie disponibili

int randomValue =  (arc4random() % 20) + 1;

NSString *stringa = [NSString stringWithFormat:@"Domanda%i", randomValue];

// Apre il dictionary

dictionary = [plistData objectForKey:stringa]; 

// e stampa a schermo la domanda

label1.text = [dictionary valueForKey:@"Titolo"];

label1.textColor = [UIColor redColor];

.........

有什么想法吗? 谢谢你提前

2 个答案:

答案 0 :(得分:0)

创建一个可变数组,并按数字顺序将问题复制到其中。使用随机值从数组中选择问题。当您提出问题时,请将其从阵列中删除。要生成新的随机值,请使用数组中仍有的项目数而不是“20”。

答案 1 :(得分:0)

试试这个。但我做了20个随机数。

NSMutableArray *array = [[NSMutableArray alloc] init];
BOOL isflag = NO;
int numberofquestions = 20;

for(int m =0; m<numberofquestions; m++)
{

    int question_number = (arc4random()%numberofquestions)+1;
    isflag = YES;

    for(int n = 0;n < (int)[array count];n++)
    {
        if([[array objectAtIndex:n] intValue] == question_number)
        {
            isflag = NO;
            m--;
            break;
        }
    }

    if(isflag == YES)
    {
        [array addObject:[NSString stringWithFormat:@"%d", question_number]];
    }
}

此数组将为您提供20个随机数而不重复。