Удалите пункт из NSMutableArray от PLIST

У меня есть plist, который содержит много пунктов викторины, потянулись беспорядочно при помощи arc4random (), я хочу удалить каждый пункт после того, как это показывают так, чтобы никакие вопросы не были повторены, я попытался использовать [thisArray removeObjectAtIndex:r]; , но пункты все еще показывают. Какие-либо идеи?

NSString *path = [[NSBundle mainBundle] pathForResource:@"initialquestions" ofType:@"plist"];

NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
    NSLog(@"The file exists");
    }
else {
    NSLog(@"The file does not exist");
}

NSMutableArray *thisArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
NSLog(@"The array count: %i", [thisArray count]);

for (int i = 0; i < [thisArray count]; i++) {

    id obj;
    int r = arc4random() % [thisArray count];
    if(r<[thisArray count]){
        obj=[thisArray objectAtIndex:r];
    }
    else{
        //error message
    }

     QuestionTitle.text = [[thisArray objectAtIndex:r] objectForKey:@"QuestionTitle"];

     [btnA setTitle:[[thisArray objectAtIndex:r] objectForKey:@"A"] forState:UIControlStateNormal];
     [btnB setTitle:[[thisArray objectAtIndex:r] objectForKey:@"B"] forState:UIControlStateNormal];
     [btnC setTitle:[[thisArray objectAtIndex:r] objectForKey:@"C"] forState:UIControlStateNormal];

     [thisArray removeObjectAtIndex:r];

}
0
nl ja de
попытайтесь печатать количество внутри для петли
добавлено автор Anoop Vaidya, источник
Я don' t знают почему я didn' t думают об этом, чтобы проверить, работает ли моя петля правильно, и она действительно благодарила Вас. Из-за моего для петли множество учитывается по сравнению с от 5 до 1 само. Я задаюсь вопросом, однако, я могу сделать каждый груз вопроса правильно в uilabel и кнопки в моей петле. У вас были бы какие-либо предложения для этого?
добавлено автор Jamie Gordon, источник

1 ответы

Поскольку ваше множество сжимается, вам нужна перемена для петли:

for (int i = [thisArray count]-1; i > -1 ; i--) {
    ....
}
1
добавлено
Вы должны использовать thisArray как собственность. Так, чтобы его стоимость была сохранена всюду по программе/методам. И назовите вышеупомянутый метод, когда на вопрос ответят. Каждый ответ назовет вышеупомянутый метод, и только один вопрос будет удален из thisArray . Все еще некоторое сомнение, можно спросить:)
добавлено автор Anoop Vaidya, источник
для или , если ?
добавлено автор Anoop Vaidya, источник
Обратная петля делает лучшую работу, чем мой оригинал для петли, которую я создал, чтобы посчитать пункты в моем plist от 5 вниз к 0, однако я имею все еще в недоумении то, как я могу заставить каждый из этих пунктов появиться в моем uilabel (как вопрос) и мой uibuttons (как три ответа), и движение к следующему вопросу, когда каждому отвечают. Я знаю, что это - различная тема из названия нити, но любое направление значительно ценилось бы.
добавлено автор Jamie Gordon, источник
Фантастический, я didn' t понимают, что множество не сохранялось и было в основном перезагружено каждый раз. Это все работает отлично, но очевидно это потерпит крах, когда множество станет пустым. Я пытался использовать: , если (thisArray == 0) {NSLog ("Ваше множество пусто");} .. но это не работает.
добавлено автор Jamie Gordon, источник
возгласы, опечатка. Я имел в виду если.
добавлено автор Jamie Gordon, источник
Получил этот проект вся работа, спасибо за всю помощь!
добавлено автор Jamie Gordon, источник