Я работаю над функцией, которая позволяет мне выбирать случайный словарь из .plist, который отображает 2 строки вопроса и ответа, который отлично работает. Однако иногда выбирается один и тот же словарь. Возможно ли, чтобы случайная функция каждый раз отображала уникальный словарь? Спасибо.

Список:

<dict>
<key>questions</key>
<array>
    <dict>
        <key>question</key>
        <string>q1</string>
        <key>answer</key>
        <string>a1</string>
    </dict>
    <dict>
        <key>question</key>
        <string>q2</string>
        <key>answer</key>
        <string>a2</string>
    </dict>
    <dict>
        <key>question</key>
        <string>q3</string>
        <key>answer</key>
        <string>a3</string>
    </dict>
</array>

.m:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"qs" ofType:@"plist"];
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];

    NSMutableArray *array = [dict objectForKey:@"questions"];

    int questionIndex = arc4random() %[array count];

    NSDictionary *question = [array objectAtIndex:questionIndex];
    NSString *answerStr = [question objectForKey:@"answer"];
    NSString *questionStr = [question objectForKey:@"question"];

    label1.text = answerStr;
    label2.text = questionStr;
0
waqqas 24 Мар 2011 в 19:30

1 ответ

Если вы не хотите показывать один и тот же словарь дважды:

  • отслеживать словари, которые вы показали. Если вы выберете один во второй раз, попробуйте еще раз
  • когда вы выбираете словарь, удалите его из массива вариантов.
0
user23743user23743 24 Мар 2011 в 19:39
Вы случайно не знаете синтаксис для этого, я пробовал removeLastObject:array и RemoveObjectAtIndex:questionIndex, но они не работали
 – 
waqqas
24 Мар 2011 в 20:10