我有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];
.........
有什么想法吗? 谢谢你提前
答案 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个随机数而不重复。