0

我有 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>

.......`我的视图控制器.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

试试这个。但我做了 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 个不重复的随机数。

于 2012-10-12T12:32:16.620 回答