0

iPhone用のクイズアプリを持っています。plistファイルからランダムな質問をロードできます。約20の質問をしたいと思います。私のplistファイルにはさらに20個ありますが、1回のクイズセッションで1つの質問が繰り返されることは望ましくありません。これは私の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>

.......`私のビューコントローラー.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];

........。

何か案は?前もって感謝します

4

2 に答える 2

0

可変配列を作成し、質問を番号順にコピーします。ランダムな値を使用して配列から質問を選択します。質問するときは、アレイから削除してください。新しいランダム値を生成するには、「20」ではなく、配列内に残っているアイテムの数を使用します。

于 2012-10-12T10:57:49.887 に答える
0

Try this.But I did for 20 random numbers.

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]];
    }
}

This array will give you the 20 random numbers without repeation.

于 2012-10-12T12:32:16.620 に答える